【问题标题】:Problem with powershell script for AD server StatusAD 服务器状态的 powershell 脚本问题
【发布时间】:2019-05-17 12:13:21
【问题描述】:

我有一个脚本,它可以包含 AD 服务器列表(使用 Get-ADComputer),结果转到 TXT 文件。我不知道如何只有在线服务器。我只需要他们的名字。

我尝试使用 cmdlet Test-Connection -CN $Server 执行一些 IF {} Else{} 但它不起作用(我可能做错了)。这是我的代码:

$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

如果可能,我希望在 TXT 文件中包含我的所有 AD 在线服务器名称。现在我只有我所有的服务器(在线和离线)。这是我的第一篇文章,如果我发错了,非常抱歉!

【问题讨论】:

    标签: powershell active-directory inventory


    【解决方案1】:

    您可以将-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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-24
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多