我正在尝试理解PowerShell中的运行空间。我知道PoshRSJob-Module,但我想自己创造我的运行空间乔布斯。
这是我的代码,大部分是从这个博客中取出的
$Computer = "somename"
[runspacefactory]::CreateRunspacePool() > $null
$SessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
$RunspacePool = [runspacefactory]::CreateRunspacePool(1,5)
$RunspacePool.Open()
1..2 | % {
$PowerShell = [powershell]::Create()
$PowerShell.RunspacePool = $RunspacePool
$PowerShell.AddScript({
param(
$Computer
)
$Computer
}) > $null
$PowerShell.AddParameter($Computer)
$Invoke = $PowerShell.BeginInvoke()
while (!($Invoke.IsCompleted)) {sleep -Milliseconds 2}
$Data = $PowerShell.EndInvoke($Invoke)
Write-Host $Data -f Red
}我脑子里有三个问题:
$Data变量是空的?$null调用$Invoke = $PowerShell.BeginInvoke() > $null,那么脚本就不能正常工作了,并且仍然创建这个输出Commands : System.Management.Automation.PSCommand Streams : System.Management.Automation.PSDataStreams InstanceId : 3b91cfda-028e-4cec-9b6d-55bded5d9d3c InvocationStateInfo : System.Management.Automation.PSInvocationStateInfo IsNested : False HadErrors : False Runspace : RunspacePool : System.Management.Automation.Runspaces.RunspacePool IsRunspaceOwner : False HistoryString :
发布于 2016-12-08 19:52:25
我不明白你的第一个问题。
关于第二个问题,我认为这是因为您使用的是$PowerShell.AddParameter($Computer)。
试一试$PowerShell.AddArgument($Computer)。AddArgument用于添加一个隐式(位置)绑定到参数的值。AddParameter用于添加命名参数。只需要一个AddParameter参数的string的重载是用于[Switch]参数的。
关于你的第三个问题,我认为是$RunspacePool.Open()给了你这个输出。
当试图确定这些事情时,寻找没有左赋值的行,特别是使用方法调用;因此,您没有将这些值赋值给变量,因为这通常是将这些值放入输出流的方式。
https://stackoverflow.com/questions/41047251
复制相似问题