Introduction – Manipuler les informations réseau en PowerShell
Voici une liste de filtres pour manipuler les informations réseau en PowerShell.
Le plus utile tout de suite
On ne va pas se mentir, les autres filtres ne m’ont servi qu’une fois en 7 ans.
Je vous donne le plus utile tout de suite, ne perdons pas de temps.
Convertir les masques de sous-réseau en PowerShell
Convertir une longueur de sous-réseau en masque.
Filter ConvertTo-LengthFromIPMask { ([Convert]::ToString(([IPAddress][String]([IPAddress]$_).Address).Address,2) -replace '[s0]' ).Length }
# Exemple d'utilisation
PS> "255.255.255.0" | ConvertTo-LengthFromIPMask
24
Convertir un masque en longueur de sous-réseau.
Filter ConvertTo-IPMaskFromLength {[System.Net.IPAddress]::Parse(([math]::Pow(2, 32) - [math]::Pow(2, 32 - $_)).ToString()).IPAddressToString }
# Exemple d'utilisation
PS C:\> 24 | ConvertTo-IPMaskFromLength
255.255.255.0
Travailler avec des adresses IP en décimal
Voici un exemple où l’on peut trouver une adresses IP au format décimal, il peut être intéressant de savoir la manipuler.
PS> $Interface = [System.Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces()[3]
PS> $Interface.GetIPProperties().UnicastAddresses[1].Address
Address : 2432805056
AddressFamily : InterNetwork
ScopeId :
IsIPv6Multicast : False
IsIPv6LinkLocal : False
IsIPv6SiteLocal : False
IsIPv6Teredo : False
IsIPv4MappedToIPv6 : False
IPAddressToString : 192.168.1.145
Convertir un décimal en adresse IP
Filter ConvertTo-IPFromDecimal { ([System.Net.IPAddress]$_).IPAddressToString }
# Exemple d'utilisation
PS> 2432805056 | ConvertTo-IPFromDecimal
192.168.1.145
Convertir une adresse IP en décimal
Filter ConvertTo-DecimalFromIP { ([IPAddress][String]([IPAddress]$_)).Address }
# Exemple d'utilisation
PS> "192.168.1.145" | ConvertTo-DecimalFromIP
2432805056
La même idée, mais à l’envers.
Travailler avec des adresses IP en binaire
Pour ceux d’entres vous qui n’ont pas séché les cours de réseau, vous le savez: la base de calcul en ipv4 est le binaire.
Cela peut donc avoir un intérêt de convertir une adresse en série de 1 et de 0.
Nan, à la relecture du sujet, cela n’a aucun d’intérêt mais, je trouve l’exercice amusant.
Convertir une adresses IP en binaire
Filter ConvertTo-BinaryFromIP { [Convert]::toString(([IPAddress][String]([IPAddress]$_).Address).Address,2) }
# Exemple d'utilisation
PS> "192.168.1.145" | ConvertTo-BinaryFromIP
11000000101010000000000110010001
Convertir un binaire en adresse IP
Filter ConvertTo-IPFromBinary { ([System.Net.IPAddress]"$([System.Convert]::ToInt64($_,2))").IPAddressToString }
# Exemple d'utilisation
PS> '11000000101010000000000110010001' | ConvertTo-IPFromBinary
192.168.1.145
Conclusion
Ces filtres devraient vous aider à manipuler les informations réseau en PowerShell.
Découvrez aussi nos autres conseils pratiques pour PowerShell !