我有一个复杂的powershell脚本,它使用远程处理并执行大量文件复制以及powershell模块的加载和卸载。在脚本中我使用robocopy只移动更改文件,任何工作都可以。
然而,powershell会话偶尔会进入一种奇怪的状态,从而不再执行外部命令。例如,如果我在控制台中键入robocopy,它只会立即返回,没有错误,也没有输出。如果我输入whoami,它会立即返回而没有输出。它只进入这个状态大约十分之一的执行相同的脚本。
如果我关闭控制台并开始新会话,一切都会恢复正常。知道这里发生了什么吗?我无法找到调试或修复此状态的方法。
谢谢, 麦克
更新 看起来有一个known issue传递数组到写主机可能会导致这种行为。我不相信我这样做,但很难确切知道。当whoami的结果变空时,我设法在陷阱中进行测试。奇怪的是,它似乎在等待长时间运行的远程操作时发生。
答案 0 :(得分:1)
不幸的是我没有给你答案,但我也看到了这种确切的行为,我可以添加一些见解;我知道一个事实,我不使用write-host,这个问题只发生在我使用PowerShell V2的后台作业和远程处理时。通常这种情况发生在我运行相当多的后台作业之后,就像你一样,问题被隔离到单个PowerShell进程。重新启动powershell总能解决问题。
答案 1 :(得分:0)
对于其他可能遇到此问题的人 - 检查所有具有写主机的行 - 在我的情况下,罪魁祸首是脚本中的这一行:
写主机 * ** * ** * ** * ** < EM> * ** * ** * ** * ** * ** < EM> * ** * ** * **** 强>
它最终被用作所有循环已完成的可视标记,并且在其下方有一个摘要......一旦我删除它,命令就会执行。如果我添加它,它们会停止执行...也许星号会溢出一些缓冲区?不确定,但我永远不会再使用它们......:)
答案 2 :(得分:0)
如果您正在使用robocopy命令使用/ R选项,请尝试增加重试次数。更好地使用默认值。 希望这很好。
-Archit