Esiste un modo semplice in Powerhell 3.0 Windows 7 per ottenere l'indirizzo ipv4 del computer locale in una variabile?Powershell ottiene l'indirizzo ipv4 in una variabile
11
A
risposta
8
Se utilizzo il nome della macchina, questo funziona. Ma è un po 'come un hack (perché sto solo raccogliendo il primo valore di indirizzo IPv4 che ricevo.)
$ipaddress=([System.Net.DNS]::GetHostAddresses('PasteMachineNameHere')|Where-Object {$_.AddressFamily -eq "InterNetwork"} | select-object IPAddressToString)[0].IPAddressToString
Nota che si deve sostituire il valore PasteMachineNameHere nell'espressione sopra
Anche questo funziona
$localIpAddress=((ipconfig | findstr [0-9].\.)[0]).Split()[-1]
15
Che ne dici di questo? (Non il mio vero Indirizzo IP!)
PS C:\> $ipV4 = Test-Connection -ComputerName (hostname) -Count 1 | Select IPV4Address
PS C:\> $ipV4
IPV4Address
-----------
192.0.2.0
noti che usare localhost sarebbe solo tornare e IP 127.0.0.1 oggetto Indirizzo
PS C:\> $ipV4 = Test-Connection -ComputerName localhost -Count 1 | Select IPV4Address
PS C:\> $ipV4
IPV4Address
-----------
127.0.0.1
L'IP deve essere ampliata fuori per ottenere la stringa indirizzo
PS C:\> $ipV4 = Test-Connection -ComputerName (hostname) -Count 1 | Select -ExpandProperty IPV4Address
PS C:\> $ipV4
Address : 556228818
AddressFamily : InterNetwork
ScopeId :
IsIPv6Multicast : False
IsIPv6LinkLocal : False
IsIPv6SiteLocal : False
IsIPv6Teredo : False
IsIPv4MappedToIPv6 : False
IPAddressToString : 192.0.2.0
PS C:\> $ipV4.IPAddressToString
192.0.2.0
5
Ecco quello che ho finito per usare
$ipaddress = $(ipconfig | where {$_ -match 'IPv4.+\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' } | out-null; $Matches[1])
ripartiti come
- comando ipconfig eseguire - ottenere tutte le informazioni di interfaccia di rete
- uso PowerShell di cui filtro con un'espressione regolare
- espressione regolare trova la linea con "IPv4" e una serie di 4 blocchi ciascuno con 1-3 cifre separati da punti, ossia un indirizzo IP v4
- disinteresse l'uscita da inviando a NULL
- infine ottenere il primo gruppo corrispondente come definito dalle staffe nell'espressione regolare.
- catturare quell'output in $ ipaddress per un uso successivo.
3
Ecco un'altra soluzione:
$env:HostIP = (`
Get-NetIPConfiguration | `
Where-Object { `
$_.IPv4DefaultGateway -ne $null `
-and `
$_.NetAdapter.Status -ne "Disconnected" `
} `
).IPv4Address.IPAddress
3
Un'altra variante utilizzando variabili $env
ambiente per afferrare hostname:
Test-Connection -ComputerName $env:computername -count 1 | Select-Object IPV4Address
o se volete semplicemente l'indirizzo IP restituito senza l'intestazione di proprietà
(Test-Connection -ComputerName $env:computername -count 1).IPV4Address.ipaddressTOstring
Ci sono indirizzi IP specificatamente r eservato per esempi/documentazione (192.0.2.0/24, 198.51.100.0/24,203.0.113.0/24) https://tools.ietf.org/html/rfc5737 – spuder
'$ ip = (Test-Connessione -ComputerName (nome host) - Conta 1) .IPV4Address.IPAddressToString' – gvee
È possibile evitare di chiamare un'utility esterna con '(hostname)' utilizzando la variabile di ambiente '$ env: COMPUTERNAME', ad esempio' Test-Connection $ env: COMPUTERNAME -Count 1 | Seleziona IPV4Address'. – Livven