Помимо того, что PowerShell является инструментом командной строки, это язык программирования от Microsoft, который позволяет управлять и автоматизировать системы. PowerShell использует другой синтаксис для своих операторов, чем большинство языков программирования.
Однако, как только вы поймете синтаксис операторов PowerShell, вы поймете, что им несложно пользоваться. Один из наиболее часто используемых операторов в PowerShell – это оператор “не равно” (-ne
). Этот оператор позволяет проверить, не равны ли два значения друг другу.
В этой статье вы узнаете о операторе “не равно” в PowerShell и как его использовать на примерах.
Предварительные условия
В этом руководстве будет показана практическая демонстрация. Если вы хотите идти в ногу со временем, убедитесь, что у вас установлена система с PowerShell. В этом руководстве используется Windows 10 и PowerShell 7.
Использование оператора “не равно” в PowerShell (основы)
Вкратце, оператор “не равно” в PowerShell (-ne
) определяет, являются ли значения двух объектов неравными и возвращает логическое значение на основе результата. Если значения не равны, результат будет True
; в противном случае результат будет False
.
Но как и когда использовать оператор “не равно” в PowerShell? В следующих разделах вы узнаете основы оператора “не равно” в PowerShell.
Сравнение переменных
Один из наиболее распространенных способов использования оператора “не равно” в PowerShell – это сравнение двух переменных. Например, предположим, у вас есть две переменные, $a
и $b
, и вы хотите узнать, равны ли они. Синтаксис сравнения выглядит следующим образом:
Если значения $a
и $b
не равны, то это сравнение вернет True
. В противном случае оно вернет False.
1. Выполните следующие команды в вашей консоли PowerShell, чтобы создать переменные, которые вы будете использовать в качестве примеров. Переменные $a, $b, $c и $d представляют разные значения. Вы можете сравнить каждое из этих значений, чтобы определить, равны они или нет.
Присвойте переменным $c и $d одно и то же значение, чтобы увидеть, как работает оператор “не равно” в PowerShell с одинаковыми значениями.
2. Теперь выполните сравнение “не равно” в PowerShell, чтобы увидеть, равны ли значения $a и $b.
Результат вернет True, потому что значение $a равно 1, а $b равно 2, что не равно.

3. Теперь сравните переменные $c и $d, чтобы увидеть, не равны ли они также.
Вы увидите ложный вывод, как показано на рисунке ниже, поскольку значения $c и $d равны (3=3).

Сравнение значений
При работе с PowerShell не все объекты, которые вы хотите сравнить, находятся в переменных. В этом случае вы можете сравнивать значения непосредственно с оператором “не равно” в PowerShell.
Например, следующая команда сравнивает два значения непосредственно с использованием оператора “не равно” в PowerShell.
Вы увидите значение True, как показано ниже, поскольку значения не равны.

Наоборот, сравнивание равных значений вернет False
.

Удаление значения из массива
Оператор PowerShell Not Equal возвращает логический результат, указывающий, не равны ли два значения. Кроме этой функции, этот оператор также может фильтровать элементы из массива.
Например, создайте переменную с именем $numbers
, содержащую массив чисел от 1 до 5.

Затем выполните следующую команду, чтобы вернуть массив за исключением одного числа (4
).
Теперь вы увидите, что команда вернула все числа в массиве, за исключением числа 4.

Сравнение строк
Помимо чисел, вы также можете применять сравнение в PowerShell Not Equal к строкам.
1. Например, предположим, у вас есть две строки: “Привет” и “Мир”. Чтобы определить, не равны ли две строки, выполните следующую команду.
Результат – True, так как “Привет” не равно “Мир”.

2. Теперь сравните строки “Привет” и “привет”, чтобы увидеть, равны ли они.
Затем вы увидите, что результат – False, потому что “Привет” равно “привет”.

3. Оператор “Не равно” в PowerShell не чувствителен к регистру. Как вы можете видеть на предыдущем шаге, “Привет” равно “привет”. Но если вам нужна чувствительность к регистру при сравнении строковых значений, замените оператор -ne на оператор -cne, что означает Не равно с учетом регистра.
В результате “Привет” и “привет” больше не равны согласно PowerShell.

Использование оператора “Не равно” в PowerShell в реальном мире (примеры)
Теперь, когда вы понимаете основную концепцию оператора “Не равно” в PowerShell, следующие разделы позволят вам познакомиться с некоторыми его использованиями в реальном мире.
Мониторинг статуса служб
A staple of Windows systems administration is monitoring the server service status. This task involves filtering out which services whose Status Is Not Running
.
Например, выполните cmdlet Get-Service
, чтобы отобразить все службы на локальной машине.
Вы можете увидеть все остановленные и запущенные службы в выводе ниже.

Теперь, чтобы отфильтровать только те службы, которые не Запущены
, выполните следующую команду и примените оператор -ne
следующим образом.
Как видите ниже, столбец Статус показывает только остановленные службы после применения сравнения “Не равно” в PowerShell.

Точно так же выполните следующую команду, чтобы вернуть службы, у которых Статус не остановлен
.
На этот раз вы увидите только запущенные службы.

Комбинирование оператора “не равно” в PowerShell с оператором AND
Помимо простого сравнения 1:1, вы можете объединить условие “не равно” в PowerShell с другим оператором сравнения, таким как -eq
(равно), используя оператор -and
. Этот метод полезен, когда объект, который вы сравниваете, должен соответствовать нескольким условиям.
Например, при мониторинге служб сервера обычно требуется убедиться, что все автоматические службы работают. Запустите следующую команду, чтобы перечислить все службы, чей Статус не является запущенным
, и чей Тип запуска - Автоматический
. В этом примере значение объекта должно соответствовать всем условиям.
Теперь вы можете увидеть автоматические службы, которые не запущены, что может помочь вам определить, какие действия вам следует предпринять.

Добавление условной логики If/Else
Вы также можете использовать оператор “не равно” в PowerShell внутри условных операторов, таких как оператор if/else.
Например, служба должна работать в большинстве случаев, если ее значение StartType равно Автоматический. Сценарий ниже получает все службы, проверяет, какие автоматические службы не запущены, и выполняет корректирующие действия – отображает сообщение и запускает службу.
Примечание: Строка Start-Service $_.Name закомментирована и не будет выполняться. Разкомментируйте эту строку, если хотите выполнить команду.
Скопируйте приведенный ниже код и выполните его в PowerShell.
Результат показывает, какие автоматические службы не запущены.

Заключение
В этой статье вы узнали о операторе “Not Equal” в PowerShell. Вы также узнали, как его использовать на примерах. На этом этапе у вас должно быть хорошее понимание того, как это работает.
С этим новым знанием вы теперь можете использовать оператор “Not Equal” в ваших сценариях PowerShell для тестирования условий. Однако помните, что также доступны другие операторы сравнения. Вам может потребоваться комбинировать несколько операторов для тестирования более сложных условий.