Linux 与 Windows 的 WMIC 差异
WMIC differences in Linux vs Windows
这个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"
^&H80000002
是HKEY_LOCAL_MACHINE
的uint32转换
... 运行s 在 Windows 的 CMD 提示符中完美无缺。我也可以在本地 windows 机器的节点包的上下文中 运行 它成功,我假设这是因为 wmic
调用是专门针对本地进行的机器 (windows) 毫不费力地处理它。返回给我一个包含我需要的结果...
res.sNames [ 'BB731A3DD8F089A6D4E59AF9D706...' ]
我创建了一个 docker 容器 运行ning Alpine 和我托管快速应用程序的节点。我按照下面的说明在 Linux...
上安装了 WMIC
https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
安装成功。
现在,当我通过我的 Node 应用程序或直接命令 运行 从 bash 提示中的 Ubuntu 完全相同的查询时,我收到了这个结果:
Garne@MYCOMPUTERNAME MINGW64 ~
$ 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 class StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
[1] 426
bash: H80000002,Software\Microsoft\SystemCertificates\MY\Certificates: No such file or directory
Garne@MYCOMPUTERNAME MINGW64 ~ $ ERROR: Description = Access is
denied.
我这辈子都搞不清楚这是由于 Linux vs Windows 中的字符串格式错误还是 Linux 是 运行正在使用无法正确解析我的查询的 wmic
的不同变体?
对于任何想知道的人,经过数小时的测试后,错误消息非常模糊。确保以 bash 风格而不是 windows 风格完全转义所有内容。
注:
$
而不是 ^&
- 将 USER 值包装在“”中
- 将 PASSWORD 值包装在 ''
此处引用:
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"};
};
这个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"
^&H80000002
是HKEY_LOCAL_MACHINE
... 运行s 在 Windows 的 CMD 提示符中完美无缺。我也可以在本地 windows 机器的节点包的上下文中 运行 它成功,我假设这是因为 wmic
调用是专门针对本地进行的机器 (windows) 毫不费力地处理它。返回给我一个包含我需要的结果...
res.sNames [ 'BB731A3DD8F089A6D4E59AF9D706...' ]
我创建了一个 docker 容器 运行ning Alpine 和我托管快速应用程序的节点。我按照下面的说明在 Linux...
上安装了 WMIChttps://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
安装成功。
现在,当我通过我的 Node 应用程序或直接命令 运行 从 bash 提示中的 Ubuntu 完全相同的查询时,我收到了这个结果:
Garne@MYCOMPUTERNAME MINGW64 ~ $ 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 class StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
[1] 426
bash: H80000002,Software\Microsoft\SystemCertificates\MY\Certificates: No such file or directory
Garne@MYCOMPUTERNAME MINGW64 ~ $ ERROR: Description = Access is denied.
我这辈子都搞不清楚这是由于 Linux vs Windows 中的字符串格式错误还是 Linux 是 运行正在使用无法正确解析我的查询的 wmic
的不同变体?
对于任何想知道的人,经过数小时的测试后,错误消息非常模糊。确保以 bash 风格而不是 windows 风格完全转义所有内容。
注:
$
而不是^&
- 将 USER 值包装在“”中
- 将 PASSWORD 值包装在 ''
此处引用:
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"};
};