我需要使用多线程在 powershell 中运行一些代码,我测试了一个简单的代码片段,它在 powershell 控制台上运行良好。但是,当我尝试在 cmd.exe 上运行时,代码没有执行,也没有抛出错误,想知道发生了什么?如果有人帮助你。
示例代码如下
$throttleLimit = 10
$iss = [system.management.automation.runspaces.initialsessionstate]::CreateDefault()
$Pool = [runspacefactory]::CreateRunspacePool(1, $throttleLimit, $iss, $Host)
$Pool.Open()
$ScriptBlock = {
param($id)
Start-Sleep -Seconds 2
Write-Host "Done processing ID $id"
[System.Console]::WriteLine("Done processing ID $id")
}
for ($x = 1; $x -le 40; $x++) {
$powershell = [powershell]::Create().AddScript($ScriptBlock).AddArgument($x)
$powershell.RunspacePool = $Pool
$handle = $powershell.BeginInvoke()
}
我的批处理文件代码如下
powershell -Command .\multiT.ps1 2>&1