![Power-Shell get-service 命令行 - 如何扩展服务状态的可能值](https://linux22.com/image/669827/Power-Shell%20get-service%20%E5%91%BD%E4%BB%A4%E8%A1%8C%20-%20%E5%A6%82%E4%BD%95%E6%89%A9%E5%B1%95%E6%9C%8D%E5%8A%A1%E7%8A%B6%E6%80%81%E7%9A%84%E5%8F%AF%E8%83%BD%E5%80%BC.png)
如果我运行它,get-service
它可能会返回不同的状态(0-4/正在运行、已停止、正在停止、正在运行)。我可以通过发出 PowerShell 命令行来扩展状态的可能值列表吗?
我尝试使用类似的方法来做到这一点| select $.status -Expand property
,但无法获取该信息。
我想知道如何这样做(我知道我可以在文档中找到可能的值列表)。我需要在脚本的后续步骤的条件中使用这些值,并且我想确保我涵盖了所有可能返回的值。
答案1
Get-Service
调用 .Net 并使用类中的构造函数创建对象System.ServiceProcess.ServiceController
。您可以通过将 cmdlet 管道化来找出数据的“类型”,如下Get-Member
所示:
Get-Service | Get-Member
该Get-Member
命令实际上是枚举 Get-Service 创建的对象的方法和属性以及它的 TypeName。输入命令后您可以立即看到 TypeName。
该 TypeName 对应于 .Net 类,然后您可以谷歌搜索(不是真的)。您必须仔细查看 msdn 页面,这需要对面向对象编程有基本的了解(我知道,又一次谷歌搜索)。最终您应该找到ServiceControllerStatus 枚举列出所有可能的值描述的页面。
返回的值实际上是整数,但 .Net 很贴心地将这些值转换为我们可以理解的内容。希望如果您稍微练习一下这个过程,您将能够应用相同的方法来查找 powershell 中其他对象的信息。