gpt4 book ai didi

powershell - New-PSSession卡住脚本

转载 作者:行者123 更新时间:2023-12-02 23:34:38 25 4
gpt4 key购买 nike

我想在本地计算机上创建多个Powershell session ,以一次对多个文件/文件夹执行一些操作,而又不减慢我的实际Powershell脚本的速度。因此,我一直在寻找在Powershell中进行多线程处理的可能性。

最简单的方法似乎是New-PSSession cmdlet。我创建了一个测试脚本来使用它。

Write-Host "Creating session"
$NewSession = New-PSSession
Write-Host "Session created" #This line will not show up anymore...
Invoke-Command -Session $NewSession -ScriptBlock {$WSH = Create-Object -comObject WScript.Shell; $WSH.Popup("Some popup", 1) } -AsJob

每当我运行它时,它在调用 New-PSSession时都会冻结

我究竟做错了什么?

最佳答案

不提供参数时,New-PSSession似乎挂起。无论如何,这并不是New-PSSession的真正含义,您应该更喜欢Start-Job cmdlet(或者,如果可用,也可以使用Start-ThreadJob)。一个例子:

$myFirstName = "Bender"
$myLastName = "the Greatest"

$jobWithArgs = Start-Job -ArgumentList $myFirstName, $myLastName -ScriptBlock {
Write-Output "My name is $($args[0]) $($args[1])"
}

# Do Local Script Stuff

$jobResult = Receive-Job $job -Wait

# Process the job result
Receive-Job -Wait将阻塞,直到收到所有作业结果。基本上,它会等待任务完成,因此您不必为此写任何样板。 -ArgumentList是可选的,用于传递可以在作业中处理的参数数组。

这是 Start-JobReceive-Job的其他Microsoft资源:
  • Start-Job
  • Receive-Job
  • 关于powershell - New-PSSession卡住脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58507168/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com