[英]powershell Start-Service fails
我有一个非常简单的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'的参数。 参数为null或空。 提供非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
前缀是一个特殊的伪范围,它将捕获局部变量并尝试序列化并远程发送。 字符串总是可序列化的(远程)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.