我有以下Powershell脚本
$se1 = New-Pssession -computerName .
$service = "Myservice"
Invoke-Command -session $se1 -scriptblock { Stop-Service -displayname $service }
Remove-PSSession $se1
失败并显示错误
Cannot bind argument to parameter 'DisplayName' because it is null
执行cmdlet时似乎传递了$ service的值。
有任何解决方法吗?
由于
答案 0 :(得分:1)
您需要将参数传递给脚本块。它不会在脚本块中扩展变量,直到它在远程系统上执行,并且该局部变量不存在。
$se1 = New-Pssession -computerName .
$service = "Myservice"
Invoke-Command -session $se1 -scriptblock { Stop-Service -displayname $args[0] } -argumentlist $service
Remove-PSSession $se1
参数列表将与脚本块一起传递给远程系统。