Powershell脚本在运行空间中的运行速度比在shell中运行速度慢

时间:2009-07-10 18:25:10

标签: performance powershell

我有一个PS脚本,用于跟踪我的VMWare ESX服务器。我需要将其作为服务运行,以便我不会永久登录。不幸的是,如果我在服务中使用运行空间而不是仅通过powershell控制台运行脚本,则脚本运行速度会更慢。它需要2-5分钟来调用VMWare Web服务,而不是大约一秒钟。

当我调用运行空间时,我应该使用某种魔法吗?

4 个答案:

答案 0 :(得分:1)

您可以将脚本作为计划任务运行。

答案 1 :(得分:1)

在没有看到你在做什么的情况下,我想不出很多会产生重大影响的事情:

  • 您是否有在PROFhell中运行时可能正在帮助它的配置文件自定义(使用PowerShell -noprofile测试)
  • 您是在计算最初在服务中导入模块或管理单元所需的时间,而不是在PowerShell中。
  • 您是否每次都在重新创建整个运行空间?

您是否尝试过使用PowerShell的2.0 API和PowerShell.Create()来运行它?

最后,您还可以查看一些开源PowerShell主机,如PoshConsole或CodePlex上的bgHost ...如果它们不能慢慢运行,那么您可以按照它们用于创建运行空间的过程。

答案 2 :(得分:0)

服务是否以具有相同权限的用户身份进行身份验证?我怀疑当它作为服务运行时会有一些超时,你自己运行脚本时没有看到。

答案 3 :(得分:0)

  

无论是使用它运行在服务中,所讨论的脚本运行速度都相同   通常的服务帐户,或者如果我在一个非常基本的控制台应用程序中运行(创建   runspace,添加脚本,执行)。

除了通常的嫌疑人(帐户权限,Set-ExecutionPolicy RemoteSigned和防火墙配置)之外,我想不出为什么PowerShell在Windows服务中不能像在控制台应用程序中那样完全相同的充分理由,这让我觉得它可能是环保的东西。它不是像糟糕的DNS解析那样愚蠢的东西,是吗?假设您在服务器上运行它,它在开发机器上的运行速度是否也很慢?

PS:我想知道这个问题是否更适合ServerFault?