简体   繁体   English

在多个循环中创建和管理Powershell实例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM