Powershell脚本的AD服务器状态问题

时间:2019-05-17 12:13:22

标签: powershell active-directory inventory

我有一个脚本,该脚本可以包含一个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文件中。目前,我只有所有服务器(联机和脱机)。这是我的第一篇文章,对不起,如果我做错了!

1 个答案:

答案 0 :(得分:0)

您可以将-Quiet参数与Test-Connection cmdlet一起使用,以仅获取TrueFalse,然后根据该结果做出决定。

$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