【问题标题】:Get linenumber of hanging script获取挂起脚本的行号
【发布时间】:2021-07-29 01:38:27
【问题描述】:

我最近“继承”了一个复杂的 PowerShell 脚本,该脚本通过任务调度程序在后台执行任务。现在我们看到脚本在某些情况下挂起,但直到现在我无法确定根本原因。

有没有办法 pol 或将调试器附加到已经运行的脚本,这样我就可以在不重写大部分内容的情况下获得当前的行号?在当前状态下,脚本的可维护性低于 20k 行代码。

我尝试检查 WMI 的属性,但没有发现任何用处。我确实找到了一个可能有用的计时脚本https://powershellexplained.com/2017-02-05-Powershell-Chronometer-line-by-line-script-execution-times/

我还编写了一个调试包装器,但挂起仅在某些情况下发生。我无法按需复制。

谢谢

【问题讨论】:

  • 您是否尝试过使用Start-Transcript?那个 otta 会告诉你事情在挂起之前到了哪里。

标签: windows powershell automation powershell-2.0 powershell-3.0


【解决方案1】:

你看过Enter-PSHostProcess吗?

Enter-PSHostProcess cmdlet 连接到并进入与本地进程的交互式会话。远程交互式会话不是创建新进程来托管 PowerShell 并运行远程会话,而是在已经运行 PowerShell 的现有进程中运行。当您与指定进程上的远程会话交互时,您可以枚举正在运行的运行空间,然后通过运行Debug-RunspaceEnable-RunspaceDebug 来选择要调试的运行空间

Enter-PSHostProcess

【讨论】:

  • 我试过了,但我无法进入交互式会话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2016-11-09
  • 2011-04-05
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多