powershell启动服务失败
我有一个非常简单的powershell脚本,可以远程启动服务powershell启动服务失败,powershell,Powershell,我有一个非常简单的powershell脚本,可以远程启动服务 Invoke-Command -Session $session -ScriptBlock { Start-Service "My test service v1" } 很好,但是 $myval="My test service v1" Invoke-Command -Session $session -ScriptBlock { Start-Service $myval } 失败于 无法验证参数“InputObject”上的参数
Invoke-Command -Session $session -ScriptBlock { Start-Service "My test service v1" }
很好,但是
$myval="My test service v1"
Invoke-Command -Session $session -ScriptBlock { Start-Service $myval }
失败于
无法验证参数“InputObject”上的参数。争论是
空或空。提供一个不为null或空的参数,然后
请重试该命令。
+CategoryInfo:InvalidData:(:)[Start Service],ParameterBindingValidationException
+FullyQualifiedErrorId:ParameterArgumentValidationError,Microsoft.PowerShell.Commands.StartServiceCommand
+PSComputerName:mdfiletest
对我来说,它们是一样的。为什么这不起作用?感谢它不起作用,因为在远程服务器上执行scriptblock时,变量
$myval
在会话状态下不存在;它只存在于本地(客户端)端。powershell v2/v3兼容的方法是:
invoke-command -session $session -scriptblock {
param($val); start-service $val } -args $myval
另一种powershell v3(唯一)方式如下:
invoke-command -session $session -scriptblock { start-service $using:myval }
$using
前缀是一个特殊的伪作用域,它将捕获局部变量并尝试序列化并远程发送。字符串始终可序列化(可远程)