我有一个奇怪的问题,当在 Powershell 命令行中进行大量播放时,在某些时候它会停止执行任何命令行应用程序,如cmd.exe
or more.com
,但会继续执行 Powershell 函数等。我可以打开一个新的 Powershell 窗口
情况
- 我正在使用Powershell 社区扩展
- 我有一个Powershell 配置文件
- 当我尝试调试正在编写的脚本时,我似乎遇到了这个问题(稍后会详细介绍)
举例问题
通常我应该能够运行 ping 并看到这样的正常输出:
PS> ping google.com
Pinging google.com [74.125.227.78] with 32 bytes of data:
Reply from 74.125.227.78: bytes=32 time=30ms TTL=49
Reply from 74.125.227.78: bytes=32 time=38ms TTL=49
Reply from 74.125.227.78: bytes=32 time=31ms TTL=49
Reply from 74.125.227.78: bytes=32 time=32ms TTL=49
Ping statistics for 74.125.227.78:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 30ms, Maximum = 38ms, Average = 32ms
PS>
但是,当我遇到此问题时,PS 提示符会立即返回:
PS> ping google.com
PS>
我可以在任务管理器中验证这段时间内 ping 没有运行。此外,对于应该修改文件系统上的文件的程序(如takeown.exe
GnuWin32 的wget.exe
),不会发生修改。据我所知,该命令根本没有运行。
我能想到的每个非 Powershell 命令行应用程序都会发生这种情况(来自官方 Python 发行版的more.com
GnuWin32 的、less.exe
StrawberryPerl的等)。ping.exe
cmd.exe
python.exe
perl.exe
我仍然可以运行任何 Powershell 函数、cmdlet 或别名。此外,我可以运行非命令行应用程序,例如notepad.exe
.
(可能的)罪魁祸首:我的剧本
在过去的几天里,当这个问题开始出现时,我一直在尝试编写 PS 脚本。在这里粘贴太长了(目前400行),但如果你想看的话,我已经把它上传到了pastebin 。(目前效果不是很好。)
现在我正在处理该脚本中 WinPE-AddExplorer 函数中的一些权限问题,所以很多时候我在该函数运行时使用 Ctrl-C'ing ......可能有什么导致问题?