PowerShell Function之获取service信息,很自然会想到这次用到的class是Win32_Service啦~~~~通过前面两篇function的文章,相信大家都应该属性套路了,知道怎么写这个语句了。那么,我们究竟需要获取service的什么信息呢?
正在运行的?已经停止的?
其实都不是,我们比较关心的是应该运行的且已经停止的服务有哪些。那么,哪些才是应该运行的呢?默认来讲,启动模式是自动运行的,就应该是需要运行的。通过运行Get-WmiObject -class Win32_Service看看是否就有我们想要的信息了。如下截图:
很好,的确就有了StartMode和State。那么命令很快就可以写出来了,如下:
除了这两个信息,可能我们还还想知道这个异常的服务是哪个登录账号登录的,那么还是需要ExpandProperty的属性哦。
因此,整个脚本如下:
function Get-InfoBadService {
[CmdletBinding()]
param(
[Parameter(Mandatory=$True)][string]$ComputerName
)
$svcs = Get-WmiObject -class Win32_Service -ComputerName $ComputerName -Filter "StartMode='Auto' AND State<>'Running'"
foreach ($svc in $svcs) {
$props = @{'ServiceName'=$svc.name;
'LogonAccount'=$svc.startname;
'DisplayName'=$svc.displayname}
New-Object -TypeName PSObject -Property $props
}
}