gpt4 book ai didi

powershell - 如果我没有收到 PowerShell 会保留多少作业输出?

转载 作者:行者123 更新时间:2023-12-04 18:43:50 25 4
gpt4 key购买 nike

我有一个长期运行 PowerShell script workflow使用 -AsJob 作为作业调用范围。它定期写入需要使用 Retrieve-Job 检索的警告和输出消息。小命令。

我很好奇 PowerShell 在哪里存储尚未检索到的作业输出,以及是否有实际上限。如果是这样,它会以先进先出的方式自动清除作业输出吗?碰撞?

最佳答案

我不知道这是否真的回答了您的问题,但我尝试了多种 Start-Job刚刚创建了一个范围从 1 到一个大数字的命令 - 大多数都给出了内存不足异常,但我终于得到了一个完成:

# these all bombed out
Start-Job -ScriptBlock { 1..4000000000 }
Start-Job -ScriptBlock { 1..2000000000 }
Start-Job -ScriptBlock { 1..1000000000 }
# this one finally started evaluating
Start-Job -ScriptBlock { 1..100000000 }

我让它运行了一会儿,它在评估范围时消耗了一个完整的 CPU 内核。根据任务管理器,它最终使用了大约 5GB 的 RAM,并且会使用更多,但此时物理内存开始耗尽。 CPU 使用率下降,因为操作系统不得不疯狂地开始分页内存。

正如您在下面的屏幕截图中看到的那样,它实际上产生了另一个 powershell.exe 进程 - 所以我想这部分回答了您在作业运行时将数据存储在哪里的问题。似乎存在取决于可用资源的实际限制。 PowerShell 不会清除或以其他方式丢失作业缓冲区中的信息(除非第二个进程崩溃?)但检索这么多数据也可能会出现问题。您可能想要进行几次试运行,看看您的环境可以支持哪些可接受和实际的限制。

注意:使用更小的范围,如 1..100000,提供了足够多的记录来观察行为,同时不会完全压倒系统。我使用较大的数字来查看实际限制是什么。

Task Manager showing powershell.exe using a lot of memory

关于powershell - 如果我没有收到 PowerShell 会保留多少作业输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666225/

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