Existe-t-il un moyen simple dans powershell 3.0 Windows 7 d’obtenir l’adresse ipv4 de l’ordinateur local dans une variable?
Voici une autre solution:
$env:HostIP = (
Get-NetIPConfiguration |
Where-Object {
$_.IPv4DefaultGateway -ne $null -and
$_.NetAdapter.Status -ne "Disconnected"
}
).IPv4Address.IPAddress
Que dis-tu de ça? (pas ma vraie adresse IP!)
PS C:\> $ipV4 = Test-Connection -ComputerName (hostname) -Count 1 | Select IPV4Address
PS C:\> $ipV4
IPV4Address
-----------
192.0.2.0
Notez que l'utilisation de localhost ne ferait que renvoyer et une adresse IP de 127.0.0.1
PS C:\> $ipV4 = Test-Connection -ComputerName localhost -Count 1 | Select IPV4Address
PS C:\> $ipV4
IPV4Address
-----------
127.0.0.1
L'objet Adresse IP doit être développé pour obtenir la chaîne d'adresse
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
Si j'utilise le nom de la machine, cela fonctionne. Mais c'est un peu comme un bidouillage (parce que je choisis juste la première valeur d'adresse ipv4 que je reçois.)
$ipaddress=([System.Net.DNS]::GetHostAddresses('PasteMachineNameHere')|Where-Object {$_.AddressFamily -eq "InterNetwork"} | select-object IPAddressToString)[0].IPAddressToString
Notez que vous devez remplacer la valeur PasteMachineNameHere dans l'expression ci-dessus.
Cela fonctionne aussi
$localIpAddress=((ipconfig | findstr [0-9].\.)[0]).Split()[-1]
Voici ce que j'ai fini par utiliser
$ipaddress = $(ipconfig | where {$_ -match 'IPv4.+\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' } | out-null; $Matches[1])
qui se décompose en
(Get-WmiObject -Class Win32_NetworkAdapterConfiguration | where {$_.DefaultIPGateway -ne $null}).IPAddress | select-object -first 1
Une autre variante utilisant la variable d'environnement $env
pour récupérer le nom d'hôte:
Test-Connection -ComputerName $env:computername -count 1 | Select-Object IPV4Address
ou si vous voulez juste l'adresse IP retournée sans l'en-tête de la propriété
(Test-Connection -ComputerName $env:computername -count 1).IPV4Address.ipaddressTOstring
Ce one liner vous donne l'adresse IP:
(Test-Connection -ComputerName $env:computername -count 1).ipv4address.IPAddressToString
Inclure dans une variable?
$IPV4=(Test-Connection -ComputerName $env:computername -count 1).ipv4address.IPAddressToString