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

test-connection that supports wildcard? workaround?

尝试查看是否有人知道使用 powershell 中的 test-connection cmdlet 来 ping DNS 中的通配符条目的已知解决方法。

我正在尝试清理我们的 DNS 数据库并从我们的 BIND 服务器导出一个列表,并且正在对 600 多台机器执行 ping 操作以查看是否有任何响应。我制作了自己的简单脚本,但也发现了一个在这个论坛上运行得更好的脚本。该脚本有效,但 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

,任何不存在的记录名称都可以。您可以生成一个 GUID 来替换记录名称中的 *

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

你的表达是否"Reachable"也可以简化为:

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