如何在PowerShell工作流中运行Invoke-Command?
要在PowerShell工作流中运行Invoke-Command,我们需要使用InlineScript块,因为工作流中不直接支持Invoke-Command。下面的示例在不使用InlineScript块的情况下出现错误。
示例
Workflow TestInvokeCommand{
Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock{
Get-Service WINRM
}
}输出-
At line:2 char:5
+ Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock{
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cannot call the 'Invoke-Command' command. Other commands from this module have been packaged as workflow activities, but this
command was specifically excluded. This is likely because the command requires an interactive Windows PowerShell session, or has
behavior not suited for workflows. To run this command anyway, place it within an inline-script (InlineScript { Invoke-Command })
where it will be invoked in isolation.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : CommandActivityExcluded上面的错误表明Invoke-Command不能直接与PowerShell一起使用,我们需要在InlineScript块内使用它,如下所示。
Workflow TestInvokeCommand{
InlineScript{
Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock{
Get-Service WINRM
}
}
}
TestInvokeCommand要在InlineScript块内的scriptblock中使用外部变量,我们需要使用$Using:VariableName。例如,
示例
Workflow TestInvokeCommand{
$server = "Labmachine2k16"
InlineScript{
Invoke-Command -ComputerName $using:Server -ScriptBlock{
Get-Service WINRM
}
}
}
TestInvokeCommand要存储输出变量,
输出结果
Workflow TestInvokeCommand{
$server = "Labmachine2k16"
$Status = InlineScript{
Invoke-Command -ComputerName $using:Server -ScriptBlock{
return( Get-Service WINRM).Status
}
}
Write-Output "WinRM Status: $status"
}
TestInvokeCommand热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短