Hea*_*ohn 2 powershell foreach foreach-object
在PowerShell中工作时,我需要将CIDR表示法转换为IP起始地址和子网掩码表示法.
执行谷歌搜索我发现这个Reddit发布挑战包含许多模糊的方法来执行此任务.
我觉得特别有趣的一个是:
$C = 13
[ipaddress](4.GB-(4GB-shr$C))|% i*g
Run Code Online (Sandbox Code Playgroud)
我花了一段时间才发现这-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
Run Code Online (Sandbox Code Playgroud)
这向我展示了IPAddress对象的属性.我需要的结果是IPAddressToString我可以通过使用%| IPAddressToString或以某种方式强制PowerShell将对象作为字符串发出来获得的属性.
因此,现在的问题是语法是什么% i*g意思?
什么是i和g我们进行乘法运算?
%是一个别名,ForEach-Object其参数集接受属性名称.
你已经在使用过了%| IPAddressToString.
该参数接受通配符,因此|% i*g意味着调用名称与该模式匹配的成员,在本例中为i paddresstostrin g.
模式必须明确地解决,所以尝试做|% i*,你会看到一个错误,它有助于告诉你模式可以匹配的所有成员.
这不是乘法的原因是它是一个字符串.由于它是命令的参数,因此不一定需要引用该字符串.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |