как вывести ПОЛНОЕ доменное имя CNAME?

#powershell

#powershell

Вопрос:

Предположим, у меня есть сервер

 $Server = "server1"
  

как мне записать вывод полного доменного имени этого сервера?

Я попробовал следующее

 write-host "$([System.Net.Dns]::GetHostByName($Server).HostName)"
  

но это ничего не выводит

я пробовал это

 (resolve-dnsname $server).name
  

он просто выводит обратно server1, а не фактическое имя

Комментарии:

1. из того, что я могу сказать, это вернет ТОЛЬКО .HostName целевого объекта. я не думаю, что имя хоста и полное доменное имя — это одно и то же.

2. @Lee_Dailey значит, нет способа получить фактическое имя сервера? поскольку фактическое имя сервера похоже на UXW23jk.domain.com … вот что я хочу вывести

3. вы ДОЛЖНЫ получать что-то обратно от этого вызова, ЕСЛИ $Server это допустимое системное имя. этот конкретный вызов, по-видимому, устарел в пользу ::GetHostEntry() , но оба они должны возвращать одну и ту же информацию. ///// по-видимому, в системах, присоединенных к домену, вы должны видеть ПОЛНОЕ доменное имя в .HostName свойстве возвращаемого объекта. ///// я бы, вероятно, изучил возможность использования Get-ADComputer , чтобы посмотреть, что он возвращает.

4. Включают ли dns-суффиксы в вашей системе зону dns, к которой выполняется запрос?

5. @AdminOfThings я также обнаружил, что могу использовать -expand : Выбрать-Объект -Развернуть

Ответ №1:

Я заставил это работать >>

 $server = "test server"

write-output ([System.Net.Dns]::GetHostByName(($server))).Hostname
  

использовал этот веб-сайт для получения помощи
https://www.powershellbros.com/powershell-tip-of-the-week-get-fqdn /

один документ против хоста записи ..https://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful /

Комментарии:

1. хм … не сработало: / можете ли вы показать это в контексте узла записи?

2. Извините, я не включил write-host >> обычно лучше использовать write-output jsnover.com/blog/2013/12/07/write-host-considered-harmful $server = «itdv-sccm» $fqdn = ([System.Net.Dns]::GetHostByName(($server))). Запись имени хоста-вывод $ fqdn

3. что, если у меня есть, скажем, 2 сервера, и я должен выполнить цикл, подобный этому $server [-1]. как бы мне это интегрировать? я пытался ([System.Net.Dns]::GetHostByName(($($server[-1])))). Имя хоста, но ничего не сделал

4. Вы могли бы создать простой массив …. или также могли бы изучить возможность получения данных из csv $servers = «itdv-sccm», «itdv-prtsrvp03» для каждого ($server в $servers) { Write-output ([System.Net.Dns]::GetHostByName(($server))). Имя хоста }

5. о, у меня уже запущен цикл. и я должен вызвать сервер таким образом $server [-1]

Ответ №2:

Для этого можно использовать WMI:

 $computer = Get-WmiObject Win32_ComputerSystem -ComputerName "Server1"
'{0}.{1}' -f $computer.DNSHostName, $computer.Domain
  

или то же самое с использованием CIM:

 $computer = Get-CimInstance Win32_ComputerSystem -ComputerName "Server1"
'{0}.{1}' -f $computer.DNSHostName, $computer.Domain
  

Комментарии:

1. Get-CimInstance : WinRM не удается обработать запрос. При использовании проверки подлинности Kerberos произошла следующая ошибка: не удается найти компьютер. Убедитесь, что компьютер существует в сети и что указанное имя написано правильно. и для wmi получите-WmiObject : сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)