РАЗДЕЛ
    about_Comparison_Operators

КРАТКОЕ ОПИСАНИЕ
    Описание операторов сравнения, используемых в Windows PowerShell.

ПОЛНОЕ ОПИСАНИЕ
    Операторы сравнения позволяют указать условия сравнения и включения, 
    удовлетворяющих указанным шаблонам. При использовании оператора сравнения 
    необходимо указать величины, которые требуется сравнивать, а также 
    оператор, который будет разделять эти величины.


    По умолчанию во всех операторах сравнения не учитывается реестр 
    символов. Для учета реестра символов в операторе сравнения 
    необходимо указать перед именем оператора букву "c".Например, 
    "-ceq" - это версия оператора "-eq", учитывающая реестр 
    символов. Чтобы отменить учет реестров символов в явном виде 
    укажите перед именем оператора букву "i". Например, "-ieq" - это 
    версия оператора "-eq", в которой явно отключен учет реестра символов.


    Все операторы сравнения, кроме операторов включения (-contains, 
    -notcontains) и операторов типа (-is, -isnot), возвращают 
    логическое значение, если в качестве входных данных оператора 
    (значение слева от оператора) используется одно значение 
    (скаляр). Если в качестве входных данных используется коллекция 
    значений, операторы включения и операторы типа возвращают 
    все соответствующие значения. Если в коллекции не найдено 
    соответствий, эти операторы не вернут ничего. Операторы 
    включения и типа всегда возвращают логическое значение.


    Оболочка Windows PowerShell поддерживает следующие операторы 
    сравнения.


    --eq
      Описание. Равенство. Распространяется на случай совпадения значений.
      Пример:


          C:\PS> "abc", "def" -eq "abc"
          abc


    -ne
      Описание. Неравенство. Распространяется на случай несовпадения значений.
      Пример:


          C:\PS> "abc", "def" -ne "abc"
          def


    -gt
      Описание. Больше.
      Пример:


          C:\PS> 8 -gt 6
          True



    -ge
      Описание. Больше или равно.
      Пример:


          C:\PS> 8 -ge 8
          True         


    -lt
      Описание. Меньше.
      Пример:


          C:\PS> 8 -lt 6
          False


    -le
      Описание. Меньше или равно.
      Пример:


          C:\PS> 6 -le 8
          True

 
    -like
      Описание. Соответствие с использованием подстановочного знака (*).
      Пример:


          C:\PS> "Windows PowerShell" -like "*shell"
          True


    -notlike
      Описание. Несоответствие с использованием подстановочного знака (*).
      Пример:


          C:\PS> "Windows PowerShell" -notlike "*shell"
          False
               

    -match 
      Описание. Соответствие строк с учетом регулярных выражений. 
      Если в качестве входных данных используется скалярное значение, 
      оператор заносит результат в автоматическую переменную 
      $Matches. Пример:

                                      
          C:\PS> "Sunday" -match "sun" 
          True 

          C:\PS> $matches 
          Имя  Значение 
          ---  -------- 
          0    sun
 
 
    -notmatch
      Описание. Несоответствие строк. Используются регулярные выражения.
                   Если в качестве входных данных используется 
                   скалярное значение, оператор заносит результат в 
                   автоматическую переменную $Matches. 
      Пример:


          C:\PS> "Sunday" -notmatch "sun"
          False

          C:\PS> $matches 
          Имя   Значение 
          ---   -------- 
          0     sun

 
    -contains
      Описание. Оператор включения. Распространяется на случай 
      совпадения значений, которые не являются фрагментом значения. 
      Всегда возвращает логическое значение.
      Пример:


          C:PS> "abc", "def" -contains "def"
          True


    -notcontains
      Описание. Оператор включения. Не распространяется на случай 
      совпадения значений. Всегда возвращает логическое значение.
      Пример:


          C:PS> "Windows", "PowerShell" -notcontains "Shell"
          True
 

    -replace
      Описание. Оператор замены. Изменяет указанные элементы значения.
      Пример:


          C:\PS> "Get-Process" -replace "Get", "Stop"
          Stop-Process
               

  Операторы равенства
      Операторы равенства (-eq, -ne) возвращают значение TRUE или 
      соответствующие элементы, если одно или несколько входных 
      значений совпадают с указанным шаблоном. Весь шаблон должен 
      соответствовать всему значению.


      В следующих примерах показано функционирование оператора равенства.


          C:PS> 1,2,3 -eq 2
          2

          C:PS> "PowerShell" -eq "Shell"
          False

          C:PS> "Windows", "PowerShell" -eq "Shell"
          C:PS> 

          C:\PS> "abc", "def", "123" -eq "def"
          def
 

  Операторы включения
      Операторы включения (-contains и -notcontains) сходны с операторами 
      равенства. Однако операторы включения всегда возвращают логическое 
      значение, даже если в качестве входных данных использовалась коллекция. 


      Кроме того, в отличие от операторов равенства, операторы включения 
      возвращают значение при обнаружении первого совпадения. Операторы 
      равенства оценивают все входные данные и затем возвращают все совпадения 
      в коллекции. В следующих примерах показано функционирование оператора -contains.


          C:PS> 1,2,3 -contains 2
          True

          C:PS> "PowerShell" -contains "Shell"
          False

          C:PS> "Windows", "PowerShell" -contains "Shell"
          False

          C:\PS> "abc", "def", "123" -contains "def"
          True

          C:\PS> "true", "blue", "six" -contains "true"
          True
 

      В следующем примере продемонстрировано отличие операторов 
      включения от оператора равенства. Операторы включения всегда 
      возвращают значение TRUE при первом совпадении.
 

          C:\PS> 1,2,3,4,5,4,3,2,1 -eq 2
          2
          2

          C:\PS> 1,2,3,4,5,4,3,2,1 -contains 2
          True
 
      
      При обработке коллекции очень большого объема оператор 
      -contains возвращает результаты быстрее, чем оператор равенства.


  Операторы совпадения
      Операторы совпадения (-match и -notmatch) выполняют поиск 
      элементов, которые соответствуют или не соответствуют 
      указанному шаблону при использовании регулярных выражений. 

      Синтаксис:

          <string[]> -match <регулярное_выражение>
          <string[]> -notmatch <регулярное_выражение>


      Ниже показаны примеры использования оператора -match.


          C:\PS> "Windows", "PowerShell" -match ".shell"
          PowerShell

          C:\PS> (get-command get-member -syntax) -match "-view"
          True

          C:\PS> (get-command get-member -syntax) -notmatch "-path"
          True

          C:\PS> (get-content servers.txt) -match "^Server\d\d"
          Server01
          Server02

         
      Операторы совпадения выполняют поиск только по строкам. Они не могут 
      выполнять поиск по массивам целых чисел и другим объектам. 

      Операторы -match и -nomatch заполняют автоматическую переменную 
      $Matches, если входные данные (аргумент с левой стороны) оператора 
      представляют собой один скалярный объект. Если входные данные 
      являются скаляром, операторы -match и -nomatch возвращают логическое 
      значение и устанавливают в качестве значения автоматической 
      переменной $Match совпавшие компоненты аргумента.

      Если входные данные являются коллекцией, операторы -match и -nomatch 
      возвращают соответствующие элементы коллекции, но не изменяют значение 
      автоматической переменной $Match.

      Например, следующая команда отправляет коллекцию строк в 
      оператор -match. Оператор -match возвращает элементы коллекции, 
      которые соответствуют шаблону. При этом значение автоматической 
      переменной $Matches не изменяется.

          C:\PS> "Sunday", "Monday", "Tuesday" -match "sun"
          Sunday

          C:\PS> $matches
          C:\PS>


      Напротив, следующая команда отправляет в оператор -match одну 
      строку. Оператор -match возвращает логическое значение и 
      изменяет значение автоматической переменной $Matches.

          C:\PS> "Sunday" -match "sun"
          True

          C:\PS> $matches

          Имя                            Значение
          ---                            --------
          0                              Sun


      Оператор -nomatch устанавливает значение автоматической 
      переменной $Matches, если входные данные являются скаляром, а 
      результат выполнения оператора равняется False, т. е. при 
      обнаружении совпадения.


          C:\PS> "Sunday" -notmatch "rain"
          True

          C:\PS> $matches
          C:\PS>
          
          C:\PS> "Sunday" -notmatch "day"
          False

          C:\PS> $matches
          C:\PS>

          Имя                           Значение
          ---                           --------
          0                             day

        
  Оператор замены
      Оператор -replace заменяет часть исходного значения или все 
      значение целиком на указанное значение с использованием 
      регулярных выражений. Оператор -replace может оказаться полезным при 
      выполнении многих административных задач, например при переименовании 
      файлов. Например, следующая команда изменяет расширения всех файлов 
      GIF на JPG.
 

          Get-ChildItem | Rename-Item -NewName { $_ -replace 
          '.gif$','.jpg$' }

 
      Ниже описан синтаксис оператора -replace, при этому <оригинал> 
      соответствует символам, которые необходимо заменить, а <замена> 
      - символам, которыми необходимо заменить оригинал.


          <входные_данные> <оператор> <оригинал>, <замена> 


      По умолчанию оператор замены не учитывает регистр символов. 
      Для учета регистра символов используйте -creplace. Для явного 
      отключения учета регистра символов используйте -ireplace. 
      Рассмотрим следующие примеры.


          C:\PS> "book" -replace "B", "C"
          Cook
          C:\PS> "book" -ireplace "B", "C" 
          Cook
          C:\PS> "book" -creplace "B", "C"
          book
 

  Побитовые операторы
      Оболочка Windows PowerShell поддерживает стандартные побитовые 
      операторы, включая побитовое И (-band), побитовое ИЛИ и побитовое 
      исключающее ИЛИ (-bor и -bxor). Начиная с версии Windows PowerShell 
      2.0, все побитовые операторы работают с 64-разрядными целыми числами.


      Windows PowerShell поддерживает следующие побитовые операторы:


      Оператор  Описание                      Пример  
      --------  --------------------------    -------------------
      -band     Побитовое И                   C:\PS> 10 -band 3
                                              2
 
      -bor      Побитовое ИЛИ (включающее)    C:\PS> 10 -bor 3
                                              11    

      -bxor     Побитовое ИЛИ (исключающее)   C:\PS> 10 -bxor 3
                                              9
 
      Побитовые операторы используют двоичный формат значений. 
      Например, для числа 10 используется битовая структура 00001010 
      (с учетом 1 байта), а для числа 3 - 00000011. При использовании 
      побитового оператора для сравнения 10 и 3 выполняется сравнение 
      отдельных битов в каждом байте.
 

      При операции побитового И результирующий бит устанавливается в 
      1 только в том случае, если оба входных бита равняются 1.


          00001010   (10)
          00000011   ( 3)
          ------------------ bAND
          00000010   ( 2)

 
      При операции побитового ИЛИ (включающего) результирующий бит 
      устанавливается в 1, если любой из входных битов или они оба 
      равняются 1. Результирующий бит устанавливается в 0 только в 
      том случае, если оба входных бита равняются 0.


          00001010   (10)
          00000011   ( 3)
          ---------------- bOR (включающее ИЛИ)
          00001011   (11)


      При операции побитового ИЛИ (исключающего) результирующий бит 
      устанавливается в 1 только в том случае, если один из входных 
      битов равняется 1.


          00001010   (10)
          00000011   ( 3)
          ---------------- bXOR (исключающее)
          00001001   ( 9)
 

СМ. ТАКЖЕ
    about_Operators
    about_Regular_Expressions
    about_Wildcards
    Compare-Object




Содержание