PowerShell调用命令-AsJob

PowerShell调用命令-AsJob,powershell,Powershell,我写的剧本很长,但除了一个问题外,效果很好。当我有更多的作业用于同一$Server时,它只提交一个作业,而不执行同一$Server的第二个或第三个作业 输入来自以下格式的CSV文件: \\domain\SHARE\Target3, 0 BELSFBRUS0131, E:\DEPARTMENTS\CBR\SHARE\Target2, 0 BELSFBRUS0131, E:\DEPARTMENTS\CBR\SHARE\Target4, 0 在上面的示例中,脚本仅启动2个作业,一个用于UNC路径Ta

我写的剧本很长,但除了一个问题外,效果很好。当我有更多的
作业
用于同一
$Server
时,它只提交一个作业,而不执行同一
$Server
的第二个或第三个作业

输入来自以下格式的CSV文件:

\\domain\SHARE\Target3, 0
BELSFBRUS0131, E:\DEPARTMENTS\CBR\SHARE\Target2, 0
BELSFBRUS0131, E:\DEPARTMENTS\CBR\SHARE\Target4, 0
在上面的示例中,脚本仅启动2个作业,一个用于UNC路径
Target3
,另一个用于
BELSFBRUS0131
上的
Target2
,这些作业执行良好。但是没有为
Target4
启动到同一服务器的作业。。。这可能是
Invoke命令
对每个服务器只启动一次的限制吗

谢谢你们的帮助

以下是脚本的重要部分(由于最多30.000行,我对其进行了限制):

Foreach($文件中的$){
#开始工作
如果($Server-eq“UNC”)-或($Server-eq“$env:COMPUTERNAME”)){
写入主机“$(获取时间戳)$env:COMPUTERNAME>Start job:local>$Server、$Target、$olderHandays、$LogFolder、$CleanFolders”-ForegroundColor灰色
$arrayAllJobs+=开始作业-脚本块$JobCall-参数列表($Target、$OlderHandays、$Server、$LogFolder、$CleanFolders)-名称文件
}
否则{
写入主机“$(获取时间戳)$env:COMPUTERNAME>Start job:Remote>$Server、$Target、$olderHandays、$LogFolder、$CleanFolders”-ForegroundColor灰色
$arrayAllJobs+=Invoke命令-ScriptBlock$JobCall-ArgumentList($Target、$OlderHandays、$Server、$LogFolder、$CleanFolders)-ComputerName“$Server.grouphc.net”-身份验证Credssp-凭证$Credentials-AsJob-JobName DelFiles
}  
}
#__________________________________________________________________________________________________________________________________
#检查工作
写入主机“`n$(获取时间戳)$env:COMPUTERNAME>等待所有作业完成..”-ForegroundColor青色;等待作业-作业$arrayAllJobs
写入主机“`n$(获取时间戳)$env:COMPUTERNAME>目标为:”-ForegroundColor-Cyan$阵列路径|格式列表
foreach($arrayAllJobs中的Job){
如果($job.State-ne'Completed'){
#写入主机($Job.ChildJobs[0].JobStateInfo.Reason.Message)-ForegroundColor红色
$arrayJobError+=$Job.ChildJobs[0]。JobStateInfo.Reason.Message
$HTMLarayJobError+=$Job.ChildJobs[0]。JobStateInfo.Reason.Message+“
” } # }
我怀疑这与您所有的作业都是使用相同的作业名创建的有关:

 Invoke-Command -ScriptBlock $JobCall -ArgumentList ($Target, $OlderThanDays, $Server, $LogFolder, $CleanFolders) -ComputerName "$Server.grouphc.net" -Authentication Credssp -Credential $Credentials -AsJob -JobName DelFiles

因此,您试图在同一台服务器上创建两个同名作业。

我在脚本中犯了一个错误,这就是第二台服务器没有进入循环的原因。我很抱歉大家,我的坏。

我刚刚尝试删除部件
-JobName DelFiles
,但没有成功。似乎
Invoke命令
仅限于每个
$Server
一个作业?尽管本地作业已正确启动多次。。
 Invoke-Command -ScriptBlock $JobCall -ArgumentList ($Target, $OlderThanDays, $Server, $LogFolder, $CleanFolders) -ComputerName "$Server.grouphc.net" -Authentication Credssp -Credential $Credentials -AsJob -JobName DelFiles