我遇到了一个奇怪的问题,当在Powershell命令行中进行大量游戏时,它会在某些时候停止执行任何命令行应用程序,如cmd.exe
或more.com
,但会继续执行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命令行应用都会发生这种情况(more.com
,GnuWin32的less.exe
,ping.exe
,cmd.exe
,python.exe
来自官方Python发行版,StrawberryPerl的perl.exe
等)。
我仍然可以运行任何Powershell函数,cmdlet或别名。此外,我可以运行非命令行应用,例如notepad.exe
。
在过去几天,当这个问题开始出现时,我一直在尝试编写PS脚本。粘贴在这里太长了(目前有400行),但如果你想看到它,我uploaded it to pastebin。 (目前效果不佳。)
现在我正在处理该脚本中WinPE-AddExplorer函数中的一些权限问题,所以很多时候我在Ctrl-C'ing运行时该函数正在运行...造成这个问题?
答案 0 :(得分:3)
我遇到了这个问题。我猜测你正在使用Powershell V2。请参阅此错误报告(https://connect.microsoft.com/PowerShell/Feedback/Details/665809)。据称已在Powershell v3中修复。 (我在v4中没有看到使用在v2中不起作用的相同脚本的问题)
解决方法是放置" [GC] :: Collect()"在你的循环中写入控制台。
答案 1 :(得分:0)
以下是一些想法:
另一方面,我查看了您的脚本,没有任何内容突然出现,这将永久性地调整您的PowerShell会话。要调试此问题,请尝试考虑您的配置文件(或脚本)可能进行的任何永久性环境更改。 PSCX的开发人员可能有也可能没有代码,可以对PowerShell环境进行永久性调整。
使用传统的故障排除技术来帮助您了解导致此问题的区域(您的脚本,PSCX或您的个人资料)。