windows - 获取挂起脚本的行号
问题描述
我最近“继承”了一个复杂的 PowerShell 脚本,它通过任务调度程序在后台执行任务。现在我们看到脚本在某些情况下挂起,但直到现在我无法确定根本原因。
有没有办法 pol 或将调试器附加到已经运行的脚本,这样我就可以在不重写大部分内容的情况下获得当前的行号?在当前状态下,脚本的可维护性低于 20k 行代码。
我尝试检查 WMI 的属性,但没有发现任何用处。我确实找到了一个可能有用的计时脚本https://powershellexplained.com/2017-02-05-Powershell-Chronometer-line-by-line-script-execution-times/
。
我还编写了一个调试包装器,但挂起仅在某些情况下发生。我无法按需复制。
谢谢
解决方案
你看过Enter-PSHostProcess
吗?
Enter-PSHostProcess
cmdlet 连接到并进入与本地进程的交互式会话。远程交互式会话不是创建新进程来托管 PowerShell 并运行远程会话,而是在已经运行 PowerShell 的现有进程中运行。当您与指定进程上的远程会话进行交互时,您可以枚举正在运行的运行空间,然后通过运行Debug-Runspace
或Enable-RunspaceDebug
推荐阅读
- arrays - 为什么 Scala 语言中的 ++: 运算符如此奇怪?
- python - 如何在 ubuntu 机器上自动登录 jupyterhub
- javascript - 具有水平和垂直滚动的 HTML 表格,第一列固定
- android - 如何在 Xamarin 的 Android 绑定项目中绑定通用 Java 类?
- javascript - ePaper 的图像映射
- javascript - 角 | 图像从多个源上传到单个数组
- javascript - Node.js Webrtc 音频问题
- python - 不允许的方法(GET):/在django中
- html - 屏幕中央的 Onclick 按钮
- php - 如果只有一个数组为空,如果两个数组都为空,则如何调用 if 条件然后调用 else 条件?