powershell:用参数启动程序的脚本?

时间:2012-01-09 15:47:21

标签: powershell authentication group-policy invoke-command

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

  

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

2 个答案:

答案 0 :(得分: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的示例所示。

答案 1 :(得分: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