[英]Create and manage Powershell-Instances within multiple loops
At first I created a single Powershell-Instance where I can start my functions. 首先,我创建了一个Powershell实例,可以在其中启动我的功能。 The script for that:
该脚本:
$list = [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()
$row = $list.Rows[1]
$code = {
param($var)
$var[0] +"\"+ $var[1]
#Stuff that has to be done
}
$newPS = [PowerShell]::Create().AddScript($code).AddArgument($row)
$job = $newPS.BeginInvoke()
while (-not $job.IsCompleted) {}
$result = $newPS.EndInvoke($job)
$newPS.Dispose()
$result
So far so good. 到现在为止还挺好。 But now I am trying to get to the next level and create that Powershell-Instances for every Element in my Datatable.
但是现在我试图进入一个新的水平,并为我的数据表中的每个元素创建该Powershell实例。 It should be looking something like this:
它应该看起来像这样:
$list = [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()
$code = {
param($var)
$var[0] +"\"+ $var[1]
#Stuff that has to be done
#Start-Sleep -s 1
}
$PSCount= 1
#start der Funktion
foreach($row in $list)
{
$newPS[$PSCount] = [PowerShell]::Create().AddScript($code).AddArgument($row)
$job[$PSCount] = $newPS[$PSCount].BeginInvoke()
$PSCount++
}
#warten bis alle Jobs kompletiert sind
#Ergebnisse verarbeiten und PS-Instanzen beenden
for($i=1; $i -eq $PSCount; $i++)
{
while (-not $job[$i].IsCompleted) {}
$result = $newPS[$i].EndInvoke($job[$i])
$newPS[$i].Dispose()
$result[0]
}
But I cant index a powershell. 但是我无法索引Powershell。 I also tried to concatenate the powershell-variable instead of making an array:
我还尝试连接powershell变量而不是创建数组:
New-Variable -name "newPS$PSCount" -value '[PowerShell]::Create().AddScript($code).AddArgument($row)'
But then i dont know how to call the method "beginInvoke()" or variable itself. 但是然后我不知道如何调用方法“ beginInvoke()”或变量本身。
就像arco444所说的那样,将$newPS
初始化$newPS
$job
并追加$newPS += ...
这样的数组$newPS += ...
解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.