【问题标题】:slow powershell/powerCLI performance when invoked from Java从 Java 调用时,powershell/powerCLI 性能缓慢
【发布时间】:2012-11-12 06:24:10
【问题描述】:

我有一个查询 VmWare 主机信息的 powerCLI 脚本。我可以通过这样做从 java 运行脚本:

Runtime runtime = Runtime.getRuntime();
String cmd = "powershell -ExecutionPolicy RemoteSigned -noprofile -noninteractive -file \"" + scriptPath + "\"";
Process proc = runtime.exec(cmd);

我已验证脚本在从 Powershell 命令行或通过 Java 运行时的工作方式相同。但是,我反复注意到,从 Java 调用时,大约需要 45 秒才能完成(相比之下,从命令行大约需要 20 秒)。

知道为什么会出现性能差异吗? 谢谢

编辑:澄清一下:在我的 powerCLI 脚本中,我捕获了开始和结束时间,然后从脚本中打印出持续时间。从 Powershell 脚本打印输出中观察到提到的 45 与 20 秒。所以这个时间不包括与调用和返回相关的开销。

【问题讨论】:

    标签: java performance powershell vmware powercli


    【解决方案1】:

    还有很多事情要做,你必须得到一个运行时的实例,运行 powershell 并传递一个脚本,然后回调到运行时,说程序已经完成运行。

    这只是 Java 开销。

    【讨论】:

    • 没错,但这就是我要问的原因:在我的 powerCLI 脚本中,我捕获开始和结束时间,然后从脚本中打印出持续时间。从 Powershell 脚本打印输出中观察到提到的 45 与 20 秒。所以这个时间不包括与调用和返回相关的开销。
    • hmmm 很有趣,我当时不知道。
    【解决方案2】:

    如何加载 PowerCLI 管理单元? Windows InternetSettings 中有一些验证管理单元来源的优化。您可以将其关闭。我不确定 Java(或根本)如何考虑这些设置。阅读这篇文章http://goo.gl/PGUqa 并尝试那里的解释。

    【讨论】:

      猜你喜欢
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 2015-05-02
      • 1970-01-01
      • 2011-03-22
      • 2015-11-09
      • 1970-01-01
      相关资源
      最近更新 更多