我有一个脚本,该脚本可以包含一个AD服务器列表(使用Get-ADComputer),结果进入TXT文件。我不知道如何只拥有在线服务器。我只需要他们的名字。
我尝试使用cmdlet Test-Connection -CN $ Server做一些IF {}其他{},但它不起作用(我可能做错了)。这是我的代码:
$TXTFile = "C:\Scripts\Serv.txt"
$TXTOutput = @()
Write-Host "INFO: Finding servers from AD"
$Servers = Get-ADComputer -Filter {OperatingSystem -like "*server*" -and Enabled -eq $true} | SORT Name
Write-Host "INFO:"$Servers.Count"Records found"
ForEach ($Server in $Servers) {
$ServerHash = $NULL
$ServerHash = [ordered]@{
"Servers Name" = $Server.Name
}
$TXTOutput += New-Object PSObject -Property $ServerHash
}
$TXTOutput
如果可能的话,我希望所有我的AD Online服务器名称都包含在TXT文件中。目前,我只有所有服务器(联机和脱机)。这是我的第一篇文章,对不起,如果我做错了!
答案 0 :(得分:0)
您可以将-Quiet
参数与Test-Connection
cmdlet一起使用,以仅获取True
或False
,然后根据该结果做出决定。
$TXTFile = "C:\Temp\Serv.txt"
$TXTOutput = @()
$servers=Get-ADComputer -Filter {OperatingSystem -like "*server*" -and Enabled -eq $true} | select -expandproperty Name
ForEach ($Server in $Servers) {
if ((Test-Connection $Server -Count 2 -Quiet) -eq $true) {
$TXTOutput += $Server
}
}
$TXTOutput | Out-File $TXTFile
如果需要,可以将$TXTOutput
传送到sort
。请记住,这可能需要一段时间,因为您基本上是对每个服务器两次ping -Count 2
。