这个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
是 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"};
};