Я хочу получить IP-адреса из имен компьютеров, но мне нужен ТОЛЬКО IP-адрес.
$computer = 'Server1'
$computer = [System.Net.Dns]::GetHostAddresses($computer) | select IPAddressToString
Возвращает @ {IPAddressToString = x.x.x.x}. Как мне вернуть "x.x.x.x"
Заменить
| select IPAddressToString
С участием (Powershell 2.0+)
| select -First 1 -ExpandProperty IPAddressToString
Или, если вы хотите работать с массивом
| select -ExpandProperty IPAddressToString
Это даст вам массив строк, поэтому, если вам нужны отдельные адреса, используйте что-то вроде
([System.Net.Dns]::GetHostAddresses($computer) | select -ExpandProperty IPAddressToString)[0]
Используя ваш пример, вы должны ввести $Computer.IPAddressToString
чтобы вернуть массив IP-адресов. Если для этого имени хоста есть только 1 IP-адрес, то это все. Однако имя хоста может иметь много адресов, поэтому оно является массивом. Поэтому, если вы хотите увидеть только первый IP-адрес в массиве, вы можете ввести $Computer.IPAddressToString[0]
add () .IpAddressToString
([Net.Dns]::GetHostAddresses('Server1')).IpAddressToString
Я всегда так делаю с помощью foreach, в отличие от select -expand:
$computer = 'Server1'
$computer = [Net.Dns]::GetHostAddresses($computer) | foreach IPAddressToString