请解释“% i*g”在此 PowerShell 脚本中的含义
Please explain what "% i*g" means in this PowerShell script
在 PowerShell 中工作时,我需要将 CIDR 表示法转换为 IP 起始地址和子网掩码表示法。
执行 Google 搜索我发现 this Reddit posting challenge 包含许多执行此任务的晦涩方法。
我发现特别有趣的一个是:
$C = 13
[ipaddress](4.GB-(4GB-shr$C))|% i*g
我花了一段时间才看到 -shr$C
只是 PowerShell -shr
运算符,在 $C
变量引用之前没有任何白色 space。
然后我需要搜索才能发现 %
是 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
,我们是在做乘法吗?
For more examples, I'm going to refer you to my post in Programming Puzzles.
%
是 ForEach-Object
的别名,它有一个接受 属性 名称的参数集。
您已经在使用 %| IPAddressToString
时看到了这一点。
虽然该参数接受通配符,因此 |% i*g
表示调用名称与该模式匹配的成员,在本例中为 i
paddresstostrin
g
。
模式必须明确解析,因此请尝试执行 |% i*
,您会看到一个错误,它有助于告诉您模式 可以 匹配的所有成员。
这不是乘法的原因是它是一个字符串。由于它是命令的参数,因此字符串不一定需要用引号引起来。
在 PowerShell 中工作时,我需要将 CIDR 表示法转换为 IP 起始地址和子网掩码表示法。
执行 Google 搜索我发现 this Reddit posting challenge 包含许多执行此任务的晦涩方法。
我发现特别有趣的一个是:
$C = 13
[ipaddress](4.GB-(4GB-shr$C))|% i*g
我花了一段时间才看到 -shr$C
只是 PowerShell -shr
运算符,在 $C
变量引用之前没有任何白色 space。
然后我需要搜索才能发现 %
是 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
,我们是在做乘法吗?
For more examples, I'm going to refer you to my post in Programming Puzzles.
%
是 ForEach-Object
的别名,它有一个接受 属性 名称的参数集。
您已经在使用 %| IPAddressToString
时看到了这一点。
虽然该参数接受通配符,因此 |% i*g
表示调用名称与该模式匹配的成员,在本例中为 i
paddresstostrin
g
。
模式必须明确解析,因此请尝试执行 |% i*
,您会看到一个错误,它有助于告诉您模式 可以 匹配的所有成员。
这不是乘法的原因是它是一个字符串。由于它是命令的参数,因此字符串不一定需要用引号引起来。