【发布时间】:2020-01-31 16:43:15
【问题描述】:
我有一个 PowerShell 脚本,它连接到数据库并提取用户数据列表。我获取这些数据并创建一个foreach 循环来运行数据脚本。
这是可行的,但速度很慢,因为结果可能是 1000 多个条目,并且它必须完成 Script.bat 的 User A 才能启动 User B。单个用户的Script.bat 独立于另一个用户,每个用户大约需要 30 秒。
有没有办法加快这个速度?我一直在玩-Parallel、ForEach-Object 和workflow,但我无法让它工作,可能是因为我是 PS 的菜鸟。
foreach ($row in $Dataset.tables[0].rows)
{
$UserID=$row.value
$DeviceID=$row.value1
$EmailAddress=$row.email_address
cmd.exe /c "`"$PSScriptRoot`"\bin\Script.bat -c `" -Switch $UserID`" >> `"$PSScriptRoot`"\${FileName3}_REST_${DateTime}.txt 2> nul";
}
【问题讨论】:
-
所以你说你想加快速度,但唯一提到的瓶颈似乎是有问题的 .BAT 文件。 需要半分钟的 .BAT 做什么? 似乎这将是要调查的相关领域,而不是上述 sn-p。
-
forloop 是我需要纠正的问题。 .bat 文件预计需要 30 秒,问题是 forloop 需要一个接一个地调用 .bat 文件 1000 次。我正在尝试找到一种方法来调用 bat 文件并开始下一个循环,而无需 powershell 等待 .bat 的执行完成。试图让 forloop 多任务:)
标签: powershell cmd