Ich habe diese Funktion um die Netzwerkmaske anhand des IP Prefix zu berechnen.
function Convert-PrefixToSubnetMask {
param (
[int]$PrefixLength
)
$binaryMask = ('1' * $PrefixLength).PadRight(32, '0') -split '(?<=\G.{8})'
return ($binaryMask | ForEach-Object { [convert]::ToInt32($_, 2) }) -join '.'
}
$addresses = Get-NetIPAddress
$addresses | Sort-Object IPAddress | ForEach-Object {
$subnetMask = Convert-PrefixToSubnetMask -PrefixLength $_.PrefixLength
"$($_.IPAddress)/$($_.PrefixLength) $($subnetMask)`t$($_.InterfaceAlias)"
}
Es funktioniert grundsätzlich aber bei jedem Aufruf der Funktion wird ein Fehler ausgegeben.
Ausnahme beim Aufrufen von "ToInt32" mit 2 Argument(en): "Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Sammlung sein.
Parametername: startIndex"
In Zeile:6 Zeichen:44
+ ... urn ($binaryMask | ForEach-Object { [convert]::ToInt32($_, 2) }) -joi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentOutOfRangeException