Powershell 计算正在运行的脚本数并等待它们完成
我正在寻找计算当前正在运行的PowerShell脚本数量的最佳方法 我从windows批处理文件运行.ps1脚本。我现在正在编写的脚本是在从客户端收到特定电子邮件时启动的,但我希望此脚本首先检查当前是否没有其他脚本正在忙于运行,如果是,则必须等待它们完成后才能继续Powershell 计算正在运行的脚本数并等待它们完成,powershell,batch-file,Powershell,Batch File,我正在寻找计算当前正在运行的PowerShell脚本数量的最佳方法 我从windows批处理文件运行.ps1脚本。我现在正在编写的脚本是在从客户端收到特定电子邮件时启动的,但我希望此脚本首先检查当前是否没有其他脚本正在忙于运行,如果是,则必须等待它们完成后才能继续 我相信有几种方法可以做到这一点,但最安全的方法是什么?我还在学习。如果可以从批处理文件转移到启动PowerShell,那么我建议使用启动脚本。这将允许您使用等待进程退出,并过滤尚未完成的脚本 因此,您的脚本可能如下所示: # crea
我相信有几种方法可以做到这一点,但最安全的方法是什么?我还在学习。如果可以从批处理文件转移到启动PowerShell,那么我建议使用启动脚本。这将允许您使用等待进程退出,并过滤尚未完成的脚本 因此,您的脚本可能如下所示:
# create a loop
foreach ($item in $reasontoloop) {
$arguments = "define script names and arguments"
# Start the powershell script
$procs += Start-Process powershell -PassThru -argumentlist $arguments
}
Write-Host -message "Waiting for Processes to complete"
while( $procs | Where-Object { $_.hasExited -eq $false } )
{
# Display progress
$measureInfo = $procs | Where-Object { $_.hasExited -eq $true } | Measure-Object
write-host "$($measureInfo.count) of $($procs.Length) still running"
Start-Sleep 1
}
Write-Host -message "Processes complete"
如果您只是对正在执行的PowerShell实例的数量感兴趣,那么下面使用的一行代码将有所帮助
@(Get-Process | where-object {$_.ProcessName -like 'powershell'}).count
我想我将使用一个线性程序-我可以使用它循环,直到没有其他PowerShell脚本运行,然后继续。