2011-05-26 87 views
1

所以我想通過嵌入PowerShell腳本中的cscript.exe來運行VBscript。它保持錯誤與權限錯誤。在調試代碼時,我意識到確切的命令不會在cscript或wscript中運行,而是會從命令提示符運行。我的印象是,默認情況下,cmd.exe調用wscript來執行VBScript。CMD.exe vs cscript/wscript

這是失敗的代碼。

$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 

不過,我應該鍵入命令(以任何形式)到命令提示符下,它按預期運行,不會提出任何問題。

在這一點上,我的想法有些偏離。有人可能會指出我的cmd.exe調用cscript/wscript與自己調用它之間的區別嗎?

非常感謝。

回答

3

試圖引用您的密碼:

cscript.exe c:\windows\system32\slmgr.vbs MIA-DC1 "contoso\administrator" 'Pa$$w0rd' /dlv 

Cmd的不解釋一個$作爲什麼特別。然而,Powershell認爲你有一個名爲$ w0rd的變量,可能會替換一個空字符串。單引號將防止嘗試的替換;雙引號不會。

+0

Duh。謝謝 - 我不敢相信我沒有看到。 – Couradical 2011-05-26 23:53:11