【问题标题】:Odd failures with PS v2 remotingPS v2 远程处理的奇怪故障
【发布时间】:2015-03-09 09:51:40
【问题描述】:

我有一个由 PS1 文件组成的中等复杂脚本,该文件对多个 PSM1 文件执行Import-Module,并包含少量定义状态的全局变量。

我让它作为一个常规脚本工作,我现在正在尝试为远程处理实现它,并遇到了一些非常奇怪的问题。我看到大量 eventID 为 0 的 .NET 运行时错误,并且脚本似乎间歇性地工作,尝试之间的时间似乎会影响结果。我知道这不是对问题的很好描述,但我没有机会进行更深入的测试,我只是想知道我是否可能将 PowerShell v2 推得比它真正可以处理的更远,尝试进行远程处理像这样复杂而庞大的脚本?还是这看起来更像是我的代码有问题,一旦我得到了排序,我将获得一致的脚本处理?我对 PowerShell 比较陌生,对远程处理完全陌生。

事件数据为

.NET 运行时版本:2.0.50727.5485 - 应用程序错误应用程序 产生了无法处理的异常。进程 ID=0x52c (1324),线程 ID = 0x760 (1888)。单击确定以终止应用程序。 点击 CANCEL 调试应用程序。

这并没有提供任何有意义的东西。此外,相当奇怪的是,如果我清除事件日志,我似乎更有可能没有问题。一旦事件日志中出现错误,脚本失败的机会就会高得多。 在我深入故障排除之前的任何想法都非常感谢。以及对远程脚本故障排除时的最佳实践建议也非常感谢。

【问题讨论】:

  • 关于 v2 远程处理的一件事是外壳内存限制设置得非常小 - 150 MB。您可以尝试将其提高到 1gb,就像这样 - Set-Item WSMan:\localhost\shell\MaxMemoryPerShellMB 1024 -force
  • 基思,成功了。一旦我将它设置为2GB!我将不得不做一些研究,看看是否有将它设置这么高的影响。幸运的是,我将要处理的大多数机器都至少有 8GB 的​​ RAM,其中很多有 32GB。
  • 不确定是否应该在此处添加此内容或开始一个新线程。但也许是相关的,所以我将从这里开始。现在我没有崩溃,我有一个新问题。该脚本查找网络路径,并且仅在远程运行时,我的日志中才会出现故障,指出找不到网络路径。这是一条 UNC 路径,我认为它在远程处理时会起作用,但也许我有一个新问题?或者也许还有另一个漂亮的设置?我在目标机器上以具有管理员权限的用户身份运行启动远程处理的脚本,当我在目标机器上以该用户身份登录时,路径是有效的。
  • FWIW,我正在使用 Invoke-Command -asJob,据我了解,这意味着脚本实际上正在目标机器上运行。不确定这是否会有所作为。我的 Google-Fu 发现表明 UNC 路径是可行的方法,但我担心我可能仍然存在双跳问题。
  • Hrm,找到了一些对允许第二次希望所需的所有配置的引用。很确定这是我的问题,所以请忽略上面的问题。希望到早上我不仅可以让它工作,而且有一种方法可以轻松地为多台机器启用它。

标签: powershell


【解决方案1】:

关于 v2 远程处理的一件事是外壳内存限制设置得非常小 - 150 MB。您可以尝试将其提高到 1gb,如下所示:

Set-Item WSMan:\localhost\shell\MaxMemoryPerShellMB 1024 -force 

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多