powershell: скрипт для запуска программы с параметрами? - PullRequest
2 голосов
/ 09 января 2012

Когда я запускаю скрипт Powershell ниже, я получаю ошибку ниже.Как запустить программы через powershell с параметрами?Сценарий будет входить в групповую политику.

Выражение вызова: не найден позиционный параметр, который принимает аргумент '\ TBHSERVER \ NETLOGON \ BGInfo \ BGIFILE.bgi / timer: 0 / s ilent /nolicprompt '.В X: \ Systems \ scripts \ PowerShell \ UpdateDesktopWithBGInfo.ps1: 6 char: 18 + Выражение Invoke <<<< $ logonpath $ ArguList + CategoryInfo: InvalidArgument: (:) [Invoke-Expression], ParameterBindingException + FullyQualifiedErrorIdF:Microsoft.PowerShell.Commands.InvokeExpressionCommand </p>

$LogonPath = $env:LOGONSERVER + "\NETLOGON\BGInfo\Bginfo.exe" 
$ArguList = $env:LOGONSERVER + '\NETLOGON\BGInfo\BGIFILE.bgi /timer:0 /silent /nolicprompt '
invoke-command $LogonPath
Invoke-Expression $logonpath $ArguList

Ответы [ 2 ]

7 голосов
/ 09 января 2012

Invoke-Command лучше всего подходит для удаленного запуска команд. Как указывает Шей, вы можете использовать амперсанд &, чтобы заставить PowerShell выполнять что-то локально, например оболочку cmd.exe.

Чтобы заставить Invoke-Command работать, вам нужно сделать что-то вроде этого:

$program = "C:\windows\system32\ping.exe"
$programArgs = "localhost", "-n", 1
Invoke-Command -ScriptBlock { & $program $programArgs }

Обратите внимание на использование амперсанда в блоке скрипта. Поэтому, если вы запускаете команду локально, просто используйте амперсанд, как показывает пример Шей.

5 голосов
/ 09 января 2012

Попробуйте это:

& "\\$env:LOGONSERVER\NETLOGON\BGInfo\Bginfo.exe" "\\$env:LOGONSERVER\NETLOGON\BGInfo\BGIFILE.bgi" /timer:0 /silent /nolicprompt

Если файл BGIFILE.bgi находится в том же месте, что и Bginfo.exe, вы можете указать только имя файла:

& "\\$env:LOGONSERVER\NETLOGON\BGInfo\Bginfo.exe" BGIFILE.bgi /timer:0 /silent /nolicprompt
...