powershell - 查找有服务的服务器
问题描述
我编写了以下脚本来查找具有“SolarWinds Agent”服务的服务器。
$Servers = (Get-ADComputer -Filter {(enabled -eq $true) -and (OperatingSystem -like 'Windows Server*') }).Name
$Service = 'SolarWinds Agent'
$Results = @()
foreach($i in $Servers){
if(Test-Connection $i -Count 1 -Quiet)
{
if((Get-Service $Service -ComputerName $i -ErrorAction SilentlyContinue).DisplayName -eq $Service)
{$Results += $i}
}
}
我想知道是否有更好的方法来编写代码。
解决方案
尝试这样的事情:
$Servers = (Get-ADComputer -Filter "Enabled -eq 'True' -and OperatingSystem -like 'Windows Server*'").Name
$Service = 'SolarWinds Agent'
$Results = foreach ($computer in $Servers) {
if(Test-Connection $computer -Count 1 -Quiet) {
if(Get-Service -DisplayName $Service -ComputerName $computer -ErrorAction SilentlyContinue) { $computer }
}
}
如果您愿意,您实际上可以省略 Test-Connection
推荐阅读
- curl - gpg:安装 Brave 浏览器时未找到有效的 OpenPGP 数据
- flutter - 颤振:如何将回调(或其他参数)传递给生成列表中的小部件?
- css - 如何在angular8中使用webrtc进行视频聊天
- css - 在使用 customize-cra 覆盖 antd less 变量时,会在构建时创建多个重复的 css 文件
- android - 如何使用 React Native 将一个页面导航到另一个页面?
- javascript - Javascript中的数组函数
- eclipse - 为什么 Eclipse New Maven Project 没有列出 Spring Boot Starters?
- python-3.x - ROS包中的“ImportError:没有名为torch的模块”
- c# - 当类的名称是根元素时,Newtonsoft json 不会反序列化
- java - 在同一行打印两个数组