Powershell: script запустить программу с параметрами?
Когда я запускаю Powershell script ниже, я получаю приведенную ниже ошибку. Как запускать программы через powershell с параметрами? script будет входить в групповую политику.
Invoke-Expression: не может быть найден позиционный параметр, который принимает аргумент '\ TBHSERVER\NETLOGON\BGInfo\BGIFILE.bgi/timer: 0/s ilent/nolicprompt '. В X:\Systems\scripts\PowerShell\UpdateDesktopWithBGInfo.ps1: 6 char: 18 + Invoke-Expression < < $logonpath $ArguList + CategoryInfo: InvalidArgument: (:) [Invoke-Expression], ParameterBindingException + FullyQualifiedErrorId: PositionalParameterNotFound, Microsoft.PowerShell.Commands.InvokeExpressionCommand
$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
Ответы
Ответ 1
Попробуйте следующее:
& "\\$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
Ответ 2
Invoke-Command
лучше всего подходит для запуска команд удаленно. Как указывает Шай, вы можете использовать амперсанд &
, чтобы сказать PowerShell выполнить что-то локально так же, как оболочку cmd.exe.
Чтобы сделать работу Invoke-Command
, вам нужно будет сделать что-то вроде этого:
$program = "C:\windows\system32\ping.exe"
$programArgs = "localhost", "-n", 1
Invoke-Command -ScriptBlock { & $program $programArgs }
Обратите внимание на использование амперсанда в блоке script. Поэтому, если вы используете команду local, просто используйте амперсанд, как показывает пример Shay.