在所有服务器中搜索服务帐户

时间:2020-09-01 21:32:17

标签: powershell

必须有更好的方法

$server = (Get-ADComputer -Filter * -Properties *).name
foreach ($s in $server)

{
Get-WmiObject Win32_Service -filter 'STARTNAME LIKE "%serviceaccount%"' -computername $s
}

我想在域中的所有服务器上搜索服务帐户。上面的方法可以满足我的需求,但它不会返回在哪个服务器上找到该服务帐户。预先感谢。

1 个答案:

答案 0 :(得分:1)

这就是我使用G-WO查找可以为您提供所需信息的对象属性的含义。 [咧嘴]

可以通过给LocalSystem调用系统列表来大大加快这一步。我现在还没有准备好编写代码。懒... [脸红]

它做什么...

  • 设置要查找的帐户
    我的服务上只列出了NetworkServiceGet-ADComputer帐户。 [咧嘴]
  • 设置要搜索的计算机列表
    您可能会使用G-WO。请确保任一在循环中使用属性名称,或者使您的查询仅返回实际名称​​ value
    我只有一个系统,所以我的清单是使用三种不同的方法来访问同一台计算机。
  • 通过系统循环
  • 致电[PSCustomObect]获取使用目标帐户的服务
  • 使用所需属性构建一个$Result
  • 将其发送到$TargetAccount = 'LocalSystem' $ComputerList = @( 'LocalHost' '127.0.0.1' $env:COMPUTERNAME ) $Result = foreach ($CL_Item in $ComputerList) { # i didn't want a gazillion services, so this uses array notation to grab the 1st item # if you want all the items, remove the trailing "[0]" $GWMI_Result = @(Get-WmiObject -Class Win32_Service -Filter "STARTNAME LIKE '%$TargetAccount%'" -ComputerName $CL_Item)[0] [PSCustomObject]@{ ComputerName = $GWMI_Result.SystemName AccountName = $GWMI_Result.StartName ServiceName = $GWMI_Result.Name } } $Result 集合
  • 在屏幕上显示

代码...

ComputerName AccountName ServiceName                
------------ ----------- -----------                
MySysName    LocalSystem AMD External Events Utility
MySysName    LocalSystem AMD External Events Utility
MySysName    LocalSystem AMD External Events Utility

输出...

"{Path}":"Report/xxx/Finalized_Reports/2014/2014_01/"