#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)