所以我试图通过嵌入在powershell脚本中的cscript.exe来运行VBscript。它通过权限错误保持错误。在调试代码时,我意识到确切的命令不会在cscript或wscript中运行,而是从命令提示符运行。我的印象是默认情况下cmd.exe调用wscript来执行VBScript。
这是让我失望的代码。
$hostname = MIA-DC1
$user = contoso\administrator
$password = Pa$$w0rd
cscript.exe c:\windows\system32\slmgr.vbs $hostname $user $password /dlv
我首先想到的是变量正在搞砸了但是,所有以下都失败了同样的错误:
cscript.exe c:\windows\system32\slmgr.vbs MIA-DC1 contoso\administrator Pa$$w0rd /dlv
cscript.exe c:\windows\system32\slmgr.vbs MIA-DC1 "contoso\administrator" Pa$$w0rd /dlv
wscript.exe c:\windows\system32\slmgr.vbs MIA-DC1 contoso\administrator Pa$$w0rd /dlv
wscript.exe c:\windows\system32\slmgr.vbs MIA-DC1 "contoso\administrator" Pa$$w0rd /dlv
但是,如果我将命令(以任何形式)键入命令提示符,它将按预期运行,不会出现任何问题。
此时我有点想法了。有人可能会指出我调用cscript / wscript的cmd.exe与自己调用它之间的区别吗?
非常感谢。
答案 0 :(得分:3)
尝试引用密码:
cscript.exe c:\windows\system32\slmgr.vbs MIA-DC1 "contoso\administrator" 'Pa$$w0rd' /dlv
Cmd不会将$解释为任何特殊内容。但是,Powershell认为你有一个名为$ w0rd的变量,可能会替换一个空字符串。单引号将阻止尝试替换;双引号不会。