Wie man NUR den Immobilienwert erhält

7

Ich möchte IP-Adressen von Computernamen abrufen, aber ich möchte NUR die IP nicht mehr.

$computer = 'Server1'
$computer = [System.Net.Dns]::GetHostAddresses($computer) | select IPAddressToString

Gibt @ {IPAddressToString = xxxx} zurück. Wie gebe ich 'xxxx' zurück?

Delonte Johnson
quelle

Antworten:

7

In Ihrem Beispiel würden Sie eingeben $Computer.IPAddressToString, um das Array von IP-Adressen zurückzugeben. Wenn es nur 1 IP-Adresse für diesen Hostnamen gibt, ist das alles. Ein Hostname kann jedoch viele Adressen haben, weshalb es sich um ein Array handelt. Wenn Sie also nur die erste IP-Adresse im Array anzeigen möchten, können Sie Folgendes eingeben$Computer.IPAddressToString[0]

Ryan Ries
quelle
8

Ersetzen

| select IPAddressToString

Mit (Powershell 2.0+)

| select -First 1 -ExpandProperty IPAddressToString

Oder für den Fall, dass Sie mit einem Array arbeiten möchten

| select -ExpandProperty IPAddressToString

Dadurch erhalten Sie eine Reihe von Zeichenfolgen. Wenn Sie also einzelne Adressen wünschen, verwenden Sie so etwas wie

([System.Net.Dns]::GetHostAddresses($computer) | select -ExpandProperty IPAddressToString)[0]
Greenstone Walker
quelle
-select -ExpandProperty Textfunktionierte auch für mich, als ich den inneren @{Text=}Textwert (im Gegensatz zum Format) eines RadioButton erhielt, dessen Deklaration und dessen Textwerte alle programmgesteuert aus einer Funktion bzw. einem Array erstellt wurden. Das fehlende Stück wurde Select -ExpandProperty Textanstelle von verwendet Select-Object Text.
TylerH
1

add () .IpAddressToString

([Net.Dns]::GetHostAddresses('Server1')).IpAddressToString
Rm558
quelle
0

Ich mache es die ganze Zeit so mit foreach, im Gegensatz zu select -expand:

$computer = 'Server1'
$computer = [Net.Dns]::GetHostAddresses($computer) | foreach IPAddressToString
js2010
quelle