LinuxでのWMICクエリ構成の違い

LinuxでのWMICクエリ構成の違い

このwmicクエリ( NODE, USER,PASSすべて鈍感)...

wmic /NODE:10.00.00.1 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:domain\my_user /PASSWORD:myPass! /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON class StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"

^&H80000002uint32変換ですHKEY_LOCAL_MACHINE

...Windows CMDプロンプトで完全に機能します。私のローカルWindowsコンピュータのノードパッケージのコンテキストでも正常に実行できます。これは、呼び出しwmicが特にローカルコンピュータ(Windows)に対して行われ、問題なく処理されるためであると仮定します。私に必要なものを含む結果を返します...

res.sNames [ 'BB731A3DD8F089A6D4E59AF9D706...' ]

Alpineを実行しているDockerコンテナとExpressアプリケーションをホストするノードを作成しました。以下の指示に従ってLinuxにWMICをインストールしました。

https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts

インストールが成功しました。

Nodeアプリまたは直接コマンドを介してUbuntuのbashプロンプトで同じクエリを実行すると、次のような結果が表示されます。

$ wmic.exe /NODE:10.00.00.1 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:domain\my_user /PASSWORD:myPass! /OUTPUT:STDOUT /APPEND:STDOUT / AGGREGATE:ON クラス StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"

[1]426

bash: H80000002、Software\Microsoft\SystemCertificates\MY\Certificates: そのファイルまたはディレクトリはありません。

$エラー:説明=アクセスが拒否されました。

wmicこれは、LinuxとWindowsの文字列形式のエラーが原因であるのか、それともLinuxが私のクエリを正しく解析しない別の亜種を実行しているのか、生涯わかりません。

@ABの提案を試みた後、キャレット/アンパサンド(^&)を完全に削除しました。結果は次のとおりです。

$ wmic /NODE:10.23.0.11 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:aim4gain\svc_certdisc /PASSWORD:finiTAryduRationmagicDialuP! /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON クラス StdRegProv CALL EnumKey H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"

間違い:

説明 = アクセスが拒否されました。

これは、両方のオペレーティングシステムで同じ資格情報を使用して実行するのと同じクエリですが、Windowsでは認証に問題はありません。

答え1

ご質問がある場合は、数時間テストした結果、エラーメッセージが非常にあいまいになりました。 Windowsスタイルではなくbashスタイルですべてをエスケープします。

メモ:

  • \$変える^&
  • USER 値を '' で囲みます。
  • PASSWORD 値を '' で囲みます。

ここを参照してください(@ ABに感謝します):

https://manpages.debian.org/buster/bash/bash.1.en.html#QUOTING

$ wmic /NODE:10.23.0.11 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:'domain\my_user' /PASSWORD:'myPass!' /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON class StdRegProv CALL EnumKey \&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
Executing (StdRegProv)->EnumKey()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
        ReturnValue = 0;
        sNames = {"BB731A3DD8F089A6D4E59AF9D70601F9CBB94A9D"};
};

関連情報