тестовое соединение, поддерживающее подстановочные знаки? обходной путь?

пытаясь узнать, есть ли у кого-нибудь известное обходное решение для использования командлета test-connection в powershell для ping-записей с подстановочными знаками в DNS.

Я пытаюсь очистить нашу базу данных DNS и экспортировать список с нашего сервера BIND, и я просто пингую более 600 машин, чтобы увидеть, отвечает ли что-нибудь. Я сделал свой собственный простой скрипт, но также нашел на этом форуме тот, который работает немного лучше. Сценарий работает, но в файлах справки командлета указано, что параметр -computername не поддерживает подстановочные знаки, и, конечно же, когда я запускаю сценарий, все записи CNAME сообщают об ошибке / 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

person Niag Ntawv    schedule 23.03.2016    source источник
comment
Поскольку это запись с подстановочными знаками, вы можете заменить ее любой меткой. "*.domain.tld" -replace '\*','wildcard'   -  person Mathias R. Jessen    schedule 23.03.2016
comment
@MathiasR.Jessen не какая-либо метка, потому что, если она существует как реальная запись, вы будете пинговать что-то еще. Но вы можете выбрать то, что вряд ли использовалось раньше.   -  person briantist    schedule 23.03.2016
comment
Спасибо, парни. Я попробую и посмотрю, как это работает.   -  person Niag Ntawv    schedule 23.03.2016


Ответы (1)


Как указано briantist, любое несуществующее имя записи Сделаю. Вы можете сгенерировать GUID, чтобы заменить * в имени вашей записи:

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

Ваше выражение о том, является ли оно «достижимым» или нет, также может быть упрощено:

@{Name='Reachable'; Expression={[bool]($_.StatusCode -eq 0)}}
person Mathias R. Jessen    schedule 23.03.2016