Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 高级语法_Powershell_Syntax - Fatal编程技术网

Powershell 高级语法

Powershell 高级语法,powershell,syntax,Powershell,Syntax,我遇到了(对我来说)相当高级的以下语法: 上面的操作正是我想要的,检索与$c.Subnet变量不匹配的子网列表。我试着用下面的线条重现同样的效果。这是行不通的 Get-ADReplicationSubnet -Filter * | Where {$_.Name -notmatch $c.Subnet} 我的问题是,;有人能用简单的英语解释第一行是如何工作的吗?(在[String]:Join('|',$c.Subnet)部分不确定。很难搜索您不知道名称的内容。此外,为什么我的版本不起作用 我应该

我遇到了(对我来说)相当高级的以下语法:

上面的操作正是我想要的,检索与
$c.Subnet
变量不匹配的子网列表。我试着用下面的线条重现同样的效果。这是行不通的

Get-ADReplicationSubnet -Filter * | Where {$_.Name -notmatch $c.Subnet}
我的问题是,;有人能用简单的英语解释第一行是如何工作的吗?(在
[String]:Join('|',$c.Subnet)
部分不确定。很难搜索您不知道名称的内容。此外,为什么我的版本不起作用

我应该澄清,
$c.Subnet
是一个值数组

[String]::Join('|',$c.Subnet)
[String]部分表示.NET类

::Join部分意味着调用String类的静态方法,也就是说,在使用对象之前不必“新建”对象

Join方法接受和数组,并将其转换为管道所描绘的字符串(在本例中)

其他人将对此进行解释。

[String]:Join(“|”,$c.Subnet)
是对.NET framework的调用--
String
类的
Join()
方法。您可以查看文档

文档对返回值进行了以下解释:
一个字符串,由分隔符字符串分隔的值中的元素组成。如果值是空数组,则该方法返回string.empty。

这意味着您的返回字符串类似于
value1 | value2 | value3
(其中每个
值都是
$c.Subnet
中的值),它将
-notmatch
解释为正则表达式,其中
|
表示
。第一行的作用是返回不匹配的值
值1
值2
值3


为什么(我认为)您的行不起作用是因为您使用了数组而不是字符串的
-notmatch
。本文提供了关于这两个字符的一些用法信息。

因此从技术上讲,这意味着我可以使用任何分隔符而不是|?文档链接声明它使用了“指定分隔符”.我不明白的最后一件事;[字符串]为什么::获取带有两个冒号的表示法?@SiemHermans不,您不能使用任何分隔符,
是特定于正则表达式的语法,意思是匹配其中任何一个。@SiemHermans您“可以”在该方法中使用您想要的任何定界字符,但是
-notmatch
将不起作用,因为
在Powershell正则表达式语法中有特殊含义(仅
表示或to
-notmatch
)。
[String]:
只是调用.NET类时使用的符号。
[Math]::Pow(2,2)
调用
Math
类的
Pow()
方法。
[String]::Join('|',$c.Subnet)