Я должен определить имя хоста удаленной системы Windows. Типичные основанные на DNS методы не работают в моей ситуации.
ping -a 1.1.1.1
nslookup 1.1.1.1
nbtstat -a -n 1.1.1.1
Идеально, для определения, чего требует машина, свое собственное имя хоста (по сравнению с тем, о чем это сообщило в какой-то момент), я хотел бы запросить систему непосредственно.
Так как сервис RDP доступен на удаленных ПК, есть ли способ запросить сервис RDP, поскольку это - имя хоста?
(Так как я не знаю, чей компьютер это, этот запрос должен будет быть ненавязчивым конечному пользователю...),
Если ваш клиент Windows 7 или новее, вы можете получить эту информацию в WMI, так как JimB упоминает с однослойной оболочкой Powershell:
Get-WmiObject win32_computersystem -ComputerName 192.168.161.5 | Select-Object Name
должен работать с клиентами, которые являются Windows Server 2003 или новее.
Если вы хотите, чтобы он был в виде строки вместо объекта,
Get-WmiObject win32_computersystem -ComputerName 192.168.161.108 | %{$_.Name}
Я бы подключился к удаленной машине через wmi и использовал имя win32_computer system.name. EG (gwmi win32_computersystem -computer 192.168.1.1).name
.Попробуйте утилиту IP сканера, такую как Angry IP Scanner, и посмотрите, может ли он опрашивать сервер на предмет имени хоста. Я знаю, что в Angry есть столбец для имени хоста, и я часто (но не всегда) вижу, что он заполнен.
Если вы предпочитаете что-то более GUIsh, есть отличная утилита под названием NetScan (и, IMHO, с лучшими возможностями, чем у других подобных утилит).
Большим преимуществом этой утилиты является то, что она может добавлять столбцы с результатами WMI-запросов.
.
Он поставляется с предустановленными WMI-запросами, но вы можете добавлять их сколько угодно
.
Запрос, который вам нужен, простой - SELECT CSName FROM Win32_OperatingSystem