簡體   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