Linux 中 WMIC 查询构造差异

Linux 中 WMIC 查询构造差异

这个wmic查询(NODEUSERPASS全部脱敏)...

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是 uint32 转换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:没有这样的文件或目录

$ 错误:描述 = 访问被拒绝。

我一生都无法弄清楚这是否是由于 Linux 与 Windows 中的字符串格式错误造成的,或者 Linux 是否正在运行wmic无法正确解析我的查询的不同变体?

在尝试了 @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

如果有人想知道,经过几个小时的测试,错误消息非常模糊。请确保以 bash 风格而不是 windows 风格转义所有内容。

笔记:

  • \$代替^&
  • 将 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"};
};

相关内容