简体   繁体   English

csv中每台计算机的开始工作

[英]Start-job for each computer in my csv

i'm looking for a way to start a new job for each computer in my csv, to launch parallel job on each of them. 我正在寻找一种方法来为csv中的每台计算机启动新作业,以在每台计算机上启动并行作业。

I already have this 我已经有这个了

$job1 = Start-Job -Scriptblock {

$Csv = "C:\springfield\Citrix\CitrixComposants.csv"
$myservers = Import-Csv $Csv

Import-module C:\springfield\Citrix\CitrixDeploymentActivlanModule.ps1
Deploy-Citrix -servers $myservers[0].server -component $myservers[0].component

}

How can i get $job[n] as many as there are servers in my csv ? 我如何获得$ job [n]和我的csv中的服务器一样多?

I was thinking about something like this, but maybe there is a better way to achieve that. 我当时在考虑这样的事情,但也许有更好的方法可以实现。 My idea is to create a dynamic $job variable ($job1, $job2, $job3, $job[n]...) 我的想法是创建一个动态的$ job变量($ job1,$ job2,$ job3,$ job [n] ...)

$Csv = "C:\springfield\Citrix\CitrixComposants.csv"

for ($i=0;$i -lt $csv.count; $i++)
{

$job+"$i" = Start-Job -Scriptblock {

$Csv = "C:\springfield\Citrix\CitrixComposants.csv"
$myservers = Import-Csv $Csv

Import-module C:\springfield\Citrix\CitrixDeploymentActivlanModule.ps1
Deploy-Citrix -servers $myservers[$i].server -component $myservers[$i].component

}

}

I also would like when a job finishes it shows me it's completed, how can i get that? 我还想当工作完成时向我显示它已经完成,我该怎么办?

I'm using powershell v4. 我正在使用Powershell v4。

Thanks for your help 谢谢你的帮助

Well, currently you are running one job for all the servers. 好吧,当前您正在为所有服务器运行一项作业。 Or you would be if you weren't specifying $Myservers[0]. 如果您未指定$ Myservers [0],则可能会那样。

If any results are returned you can see the results by using receive-job. 如果返回任何结果,则可以使用receive-job查看结果。 I would think the results would contain output returned from each server, assuming you removed $myservers[0] and that deploy-citrix cmdlet accepts an array. 我认为结果将包含每个服务器返回的输出,假设您删除了$ myservers [0]并且deploy-citrix cmdlet接受一个数组。 If you just want to check the status you can use get-job. 如果只想检查状态,可以使用get-job。

If you wanted to instead start a job for each server it should look more like this: 如果您想为每台服务器启动一个作业,它应该看起来像这样:

$Csv = "C:\springfield\Citrix\CitrixComposants.csv"
$myservers = Import-Csv $Csv

Foreach ($Server in $MyServers)
{
    $SrvName = $Server.Server
    $Component = $Server.Component
    Start-Job -ArgumentList $SrvName,$Component -Scriptblock {
    Param ($SrvName,$Component)
    Import-module C:\springfield\Citrix\CitrixDeploymentActivlanModule.ps1
    Deploy-Citrix -servers $Srvname -component $component
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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