3

我有一个复杂的 powershell 脚本,它使用远程处理并执行大量文件复制以及 powershell 模块的加载和卸载。在脚本中,我使用 robocopy 仅移动更改文件,一切正常。

然而,powershell 会话时不时地进入一个奇怪的状态,它不再执行外部命令。例如,如果我在控制台中键入 robocopy,它只会立即返回,没有错误也没有输出。如果我输入 whoami,它会再次立即返回,没有输出。它只有大约十分之一的相同脚本执行进入这种状态。

如果我关闭控制台并开始一个新会话,一切都会恢复正常。知道这里发生了什么吗?我想不出调试或修复此状态的方法。

谢谢,迈克

更新 似乎将数组传递给写入主机存在一个已知问题,可能导致此行为。我不相信我正在这样做,但很难确定。当 whoami 的结果为空时,我设法设置了一个陷阱测试。奇怪的是,它似乎是在等待长时间运行的远程操作时发生的。

4

3 回答 3

1

不幸的是,我没有给你答案,但我也看到了这种确切的行为,我可以添加一些见解;我知道我没有使用 write-host,并且这个问题仅在我使用 powershell V2 的后台作业和远程处理时才会出现。通常,这发生在我运行了相当多的后台作业之后,就像你一样,问题被隔离到那个单一的 powershell 进程。重新启动 powershell 始终可以解决问题。

于 2011-06-30T23:59:18.337 回答
0

对于可能遇到此问题的其他任何人 - 检查所有具有 write-host 的行 - 在我的情况下,罪魁祸首是脚本中的这一行:

写主机* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****

它最后被用作所有循环已完成的视觉标记,并且在它下方有一个摘要......只要我删除它,命令就会执行。如果我添加它,它们就会停止执行......也许星号会溢出一些缓冲区?不确定,但我永远不会再使用它们...... :)

于 2011-09-15T21:03:35.283 回答
0

如果您在 robocopy 命令中使用 /R 选项,请尝试增加重试次数。最好使用默认值。希望这工作正常。

-建筑师

于 2012-03-20T13:15:54.780 回答