Powershell cmdlet如何工作?

时间:2013-05-12 09:38:12

标签: powershell scripting

具体来说,我需要知道重新启动服务 cmdlet的工作原理 例如,当我写作时

Restart-Service myservice1, myservice2

我想知道它是如何流动的 它是在重新启动它们之前停止它们还是一个接一个地重新启动它们?

一般来说,有没有看到cmdlet中的编码?

2 个答案:

答案 0 :(得分:4)

您可以尝试使用dotPeek等内容查看模块库。对于该cmdlet,源是可见的(至少是dotPeek的版本。我不是程序员,所以我不知道这是否是100%正确的代码)。至少它表明它在foreach循环中停止服务,然后启动它。我不打算发布代码,因为我不知道它是多么合法。 :)

您还可以查看Microsoft Technet上提供的文档。

  

Restart-Service cmdlet旨在停止然后重新启动   指定的服务。 (如果服务已经停止,那就是   好的:在这种情况下重新启动 - 服务只会启动服务。)这   对于具有内存泄漏的服务,它是一个特别有用的cmdlet   并定期需要停止然后重新启动;   Restart-Service可以使用单个功能来处理这两个功能   命令。

Source: Technet

答案 1 :(得分:0)

总是很好阅读文档,但像往常一样,YMMV。不精确的语言很快就会变得很滑,糟糕的假设并不好玩。虽然我在说教,但魔鬼却在细节中。

所以测试永远不会伤害。您可以尝试运行get-wmiObject win32_service,而restart-service在另一个窗口中执行它的操作。 Gwmi只是因为get-service可能太慢了。可能是矫枉过正,但测试似乎在单个脚本中可以使用,可能有启动作业和获取日期。