You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell动态获取所有Windows服务器的服务状态?

解决动态获取服务器列表后无法查询服务状态的问题
  • 问题根源:你获取服务器列表时用了ft Name(Format-Table)命令,它会把原始的AD计算机对象转换成格式化的文本输出,而Get-Service的-ComputerName参数需要的是字符串类型的计算机名,不是格式化后的文本对象,因此$servers无法被正确识别。

  • 修正服务器列表获取命令:
    把ft Name替换成Select-Object -ExpandProperty Name,直接提取计算机名字符串数组;同时不需要-Properties *(默认已返回Name属性,去掉能提升执行效率):

    $servers = Get-ADComputer -Filter {OperatingSystem -like "*windows*server*"} | Sort-Object Name | Select-Object -ExpandProperty Name
    
  • 执行服务查询:
    现在再运行你的服务查询命令就能正常生效:

    Get-Service -ComputerName $servers -Name wuauserv | Select-Object MachineName, Name, DisplayName, Status | Sort-Object Status
    
  • 额外实用技巧:

    • 如果担心部分服务器离线导致报错,可以先筛选在线服务器:
      $onlineServers = $servers | Where-Object { Test-Connection -ComputerName $_ -Count 1 -Quiet -ErrorAction SilentlyContinue }
      Get-Service -ComputerName $onlineServers -Name wuauserv | Select-Object MachineName, Name, DisplayName, Status | Sort-Object Status
      
    • 服务器数量较多时,用Invoke-Command批量执行效率更高:
      Invoke-Command -ComputerName $servers -ScriptBlock { Get-Service -Name wuauserv } | Select-Object MachineName, Name, DisplayName, Status | Sort-Object Status
      

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:50:44