CMD.exe vs cscript / wscript - PullRequest
       36

CMD.exe vs cscript / wscript

1 голос
/ 26 мая 2011

Итак, я пытаюсь запустить VBscript через cscript.exe, встроенный в скрипт powershell. Он продолжает выдавать ошибку с ошибкой разрешения. При отладке кода я понял, что точная команда не будет выполняться в 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

Однако, если я наберу команду (в любой форме) в командной строке, она будет выполняться так, как задумано, без вопросов.

На данный момент у меня немного не хватает идей. Может ли кто-то указать мне на различия между cmd.exe, вызывающим cscript / wscript, и самим вызовом?

Заранее большое спасибо.

1 Ответ

3 голосов
/ 27 мая 2011

Попытка процитировать ваш пароль:

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

Cmd не интерпретирует $ как нечто особенное.Однако Powershell считает, что у вас есть переменная с именем $ w0rd и, вероятно, подставляет пустую строку.Одинарные кавычки предотвратят попытку замены;двойных кавычек не будет.

...