2

当我在下面运行 Powershell 脚本时,我收到以下错误。如何通过带有参数的powershell运行程序?该脚本将是一个组策略登录。

调用表达式:找不到接受参数 '\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
4

2 回答 2

7

Invoke-Command最适合远程运行命令。正如 Shay 指出的那样,您可以使用与号&来告诉 PowerShell 在本地执行某些操作,就像 cmd.exe shell 一样。

为了完成Invoke-Command工作,您需要执行以下操作:

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

请注意脚本块中与符号的使用。因此,如果您在本地运行命令,只需使用与 Shay 的示例所示的符号即可。

于 2012-01-09T16:41:28.573 回答
5

试试这个:

& "\\$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
于 2012-01-09T16:00:38.053 回答