я наткнулся на следующую строку синтаксиса, который является довольно продвинутым (для меня):Расширенный синтаксис
(Get-ADReplicationSubnet -Filter *) -notmatch [String]::Join('|',$c.Subnet)
выше делает именно то, что я хочу, получить список подсетей, которые не соответствуют против переменной $c.Subnet
, Я попробовал воссоздать тот же эффект с приведенной ниже строкой. Это не работает.
Get-ADReplicationSubnet -Filter * | Where {$_.Name -notmatch $c.Subnet}
Мой вопрос: Может ли кто-нибудь объяснить на простом английском языке, как работает первая линия? (Не уверен, что на [String]::Join('|',$c.Subnet)
части. Трудно найти что-то вы не знаете имя. Кроме того, почему моя версия не работает?
я должен уточнить, что $c.Subnet
представляет собой массив значений.
Так что это означает, что я могу использовать любой разделительный символ вместо |? Ссылка на документацию указывает, что она использует «указанный разделитель». Последнее, чего я не понимаю; Почему [String] :: получает обозначение с двумя двоеточиями? –
@SiemHermans Нет, вы не можете использовать какой-либо разделитель, '' 'специфичен для синтаксиса регулярного выражения, соответствующего любому из них. – zdan
@SiemHermans Вы можете «использовать любой разделительный символ, который вы хотите с помощью этого метода, но тогда' -notmatch' не будет работать, потому что '|' имеет особое значение в синтаксисе regex PowerShell (только '|' означает ** или ** на '-notmatch'). '[String] ::' - это только обозначение, используемое при вызове класса **. NET **. '[Math] :: Pow (2, 2)' вызывает метод 'Pow()' класса 'Math'. – SpellingD