powershell: скрипт для запуска программы с параметрами?
Когда я запускаю скрипт Powershell ниже, я получаю сообщение об ошибке ниже. Как запустить программы через powershell с параметрами? Сценарий будет вход в групповую политику.
Invoke-Expression: невозможно найти позиционный параметр, который принимает аргумент '\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 + FullyQualifiedErrorImeterPalPal: Position 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
2 ответа
Попробуй это:
& "\\$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
Invoke-Command
лучше всего подходит для удаленного запуска команд. Как указывает Шей, вы можете использовать амперсанд &
сказать PowerShell, чтобы он выполнял что-то локально, например оболочку cmd.exe.
Чтобы сделать Invoke-Command
Для работы вам нужно будет сделать что-то вроде этого:
$program = "C:\windows\system32\ping.exe"
$programArgs = "localhost", "-n", 1
Invoke-Command -ScriptBlock { & $program $programArgs }
Обратите внимание на использование амперсанда в блоке скрипта. Так что, если вы запускаете команду локально, просто используйте амперсанд, как показывает пример Шей.