对PowerShell来说是新手,我猜这个存在,但我找不到。我正在寻找一个powershell命令,它将显示用于运行Windows服务的帐户?我首先检查它是否正在运行,然后确保它使用正确的AD帐户运行。到目前为止,我有以下内容......
$serviceName = '<my service name>'
If (Get-Service $serviceName -ErrorAction SilentlyContinue) {
If ((Get-Service $serviceName).Status -eq 'Running') {
$status = "$serviceName found and is running."
} Else {
$status = "$serviceName found, but it is not running."
}
#Here is where I should check Log On As name
} Else {
$status = "$serviceName not found."
}
write-host "Status: $status`n"
pause
我的大多数搜索引导我去Get-WmiObject,但我找不到我想要的东西。提前感谢您的帮助。
答案 0 :(得分:3)
(Get-WmiObject Win32_Service -Filter "Name='$serviceName'").StartName
。 (是的,这个属性的名称反直觉,但是the docs don't lie)。
答案 1 :(得分:1)
您还可以使用更新的CIM cmdlet。哪个是MS想要的,并指导folsk使用。
Get-CimInstance -ClassName CIM_Service | Select-Object Name, StartMode, StartName
什么是CIM?我为什么要在PowerShell中使用它? https://blogs.technet.microsoft.com/heyscriptingguy/2014/01/27/what-is-cim-and-why-should-i-use-it-in-powershell
WMI更新
在Windows PowerShell 4.0和Windows PowerShell 3.0中,Microsoft提供了一种与WMI交互的更新方法:Windows PowerShell的CIMCmdlets模块。借助这个新的Windows PowerShell模块版本,Microsoft还发布了一个名为Management Infrastructure(MI)的全新Windows应用程序编程接口(API)。
新的MI API更符合DMTF标准,如MSDN中为什么使用MI? MI允许软件开发人员和硬件制造商公开信息,并允许IT专业人员使用基于标准的机制与硬件进行交互。随着这项技术的不断发展,我相信我们将看到Microsoft Windows与竞争平台之间的更多跨平台集成。
我应该在Windows PowerShell中使用CIM或WMI吗? https://blogs.technet.microsoft.com/heyscriptingguy/2016/02/08/should-i-use-cim-or-wmi-with-windows-powershell
Get-WmiObject是原始的PowerShell cmdlet之一。 (作为快速测验,您可以命名137个原始cmdlet中的多少个?)。当引入其他WMI cmdlet时,它在PowerShell 2.0中得到了增强。在PowerShell 1.0中,Get-WmiObject是唯一可以访问另一个系统的cmdlet。
WMI cmdlet的一大缺点是它们使用DCOM访问远程计算机。 DCOM不是防火墙友好的,可以被网络设备阻止,并在出现问题时给出一些神秘的错误。
CIM cmdlet作为新API的一部分出现在PowerShell 3.0中,用于处理更加基于标准的CIM类。 PowerShell工作流程掩盖了CIM cmdlet,但它们(在我看来)是该版本中最重要的事情。
与CIM相关的另一个主要进展是引入了CDXML,它使CIM类能够包含在一些简单的XML中,并作为PowerShell模块发布。这就是Windows 8及更高版本中超过60%的cmdlet的生成方式。