支持通配符的测试连接?解决办法:

时间:2016-03-23 19:17:03

标签: powershell cmdlets

尝试查看是否有人知道在PowerShell中使用测试连接cmdlet来ping DNS中的通配符条目的解决方法。

我试图清理我们的DNS数据库并从我们的BIND服务器导出一个列表,我正在ping 600+计算机以查看是否有任何响应。我制作了自己的简单脚本,但也找到了一个在这个论坛上工作得更好的脚本。该脚本有效,但cmdlet帮助文件声明-computername参数不支持通配符,当然,当我运行脚本时,所有CNAME记录在实际应该响应时报告down / false。我使用的代码在下面并且有点乱,但我只是需要一些快速的东西并且它有效,但我已将其包含在下面以供参考:

Get-Content -path C:\Work\testy.txt  | ForEach-Object { Test-Connection -ComputerName $_ -Count 1 -AsJob } | Get-Job | Receive-Job -Wait | Select-Object @{Name='ComputerName';Expression={$_.Address}},@{Name='Reachable';Expression={if ($_.StatusCode -eq 0) { $true } else { $false }}} |out-file -FilePath c:\work\TEST.txt

1 个答案:

答案 0 :(得分:1)

作为pointed out by briantist,任何不存在的记录名称都可以。您可以生成GUID来替换记录名称中的*

"subdomain.domain.tld","*.domain.tld" |ForEach-Object {
    Test-Connection -ComputerName $($_ -replace '\*',"$([guid]::NewGuid())")
} 

您的表达是否“可达”也可以简化:

@{Name='Reachable'; Expression={[bool]($_.StatusCode -eq 0)}}