繁体   English   中英

Powershell多线程无法在cmd.exe上运行

[英]Powershell multithreading not working on cmd.exe

我需要使用多线程在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

在ISE中,脚本会在线程输出开始显示之前完成。 我在代码的末尾添加了start-sleep -sec 10 ,现在我从cmd获得输出。 由于某种原因,输出却翻了一番(例如,每个线程有2行)。

暂无
暂无

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

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