LoginSignup
0
0

wmicコマンドをPowerShellのCimInstanceへ置き換えたい

Last updated at Posted at 2024-04-24

職場でbatファイル(コマンドプロンプト)を使用している。
そのうち、wmicコマンドを多量に使用している。
将来、wmicコマンドが廃止される事を知った。
廃止スケジュールは、Windows11 24H2で無効(Disable)化され、次期Windows(Windows12 ?)で削除されると発表されている。

batファイル内のwmicコマンドの代替えとして、ps1ファイル(PowerShell)内でCimInstanceを使いたい。
そこで、batファイル内でWindows のビルド番号を確認して22631(バージョン23H2)を超えていたらPowerShellのCimInstanceを使う。
それ以外(Windows10 や Windows11の23H2 以下のバージョン)なら従来通りwmicコマンドを使う。
その分岐処理をbatファイル内に追加したく、考案。

2024年04月24日水曜日にWindows 10とWindows 11で確認済み。
以下を、別途batファイルへ保存する。
保存する際は改行コードを「Cr + Lf」に。
文字コードを「Shift-JIS」又は「ANSI」にする。

@echo off
rem Windows のビルド番号が22631(バージョン23H2)を超えていたら、PowerShellのCimInstanceを使う。
rem それ以外(Windows10 や Windows11の23H2 以下のバージョン)なら従来通りwmicコマンドを使う。

rem 初期状態を新し目のビルド番号にしておく。
set osBuildNumber=22632
set flgCIM=1

rem レジストリ内から、Windowsのビルド番号を取得。(Windows10 と Windows11で有効。※次期Windows(Windows12 ?)でも有効かどうかは不明。)
for /f "tokens=1,2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CurrentBuildNumber"' ) DO (
    if "%%i"=="CurrentBuildNumber" (
        set osBuildNumber=%%k
    )
)
if %osBuildNumber% gtr 22631 (
    rem echo osBuildNumberは22631を超えている。PowerShellのCimInstanceを使う。
    set flgCIM=1
) else (
    rem echo osBuildNumberは22631未満である。wmicコマンドを使う。
    set flgCIM=0
)
echo osBuildNumber=%osBuildNumber%

rem 他のwmicコマンドを使っている箇所でも、変数「flgCIM」の値を参照する事で
rem wmicコマンドを使えるかどうかを共有できる。
echo flgCIM=%flgCIM%

if %flgCIM% equ 0 (
    rem 従来通り、wmicコマンドを使う処理。
) else (
    rem ps1ファイルを呼び出す等、PowerShellのCimInstanceを使う処理。
)

rem 続きの処理を色々実施。

pause
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0