При работе в PowerShell мне нужно было преобразовать нотацию CIDR в начальный IP-адрес и нотацию маски подсети.
Выполняя поиск в Google, я обнаружил этот запрос на публикацию в Reddit , который содержал множество неясных способов выполнить эту задачу.
Один, который я нашел особенно интересным, был:
$C = 13
[ipaddress](4.GB-(4GB-shr$C))|% i*g
Мне потребовалось некоторое время, чтобы увидеть, что -shr$C
был просто оператором PowerShell -shr
без пробелов перед ссылкой на переменную $C
.
Затем мне нужно было найти, что %
является псевдонимом для Foreach-Object
.
Просто запросив значение [ipaddress](4.GB-(4GB-shr$C))
я получил:
Address : 63743
AddressFamily : InterNetwork
ScopeId :
IsIPv6Multicast : False
IsIPv6LinkLocal : False
IsIPv6SiteLocal : False
IsIPv6Teredo : False
IsIPv4MappedToIPv6 : False
IPAddressToString : 255.248.0.0
Который показал мне свойства объекта IPAddress. В результате мне нужно свойство IPAddressToString
, которое можно получить с помощью %| IPAddressToString
или каким-либо образом принудительно заставить PowerShell выдавать объект в виде строки.
Следовательно, теперь вопрос в том, что означает синтаксис % i*g
?
Что такое i
и g
и выполняем ли мы умножение?