November 24,2021

Praca z wyrażeniami regularnymi w Powershell

by Kolbowicz Marek

Są one obsługiwane przez prawie wszystkie języki programowania i skryptowe i z pewnością doprowadziły wielu początkujących do rozpaczy: wyrażenia regularne. Są jednak dobrze sprawdzone jako pomoce dla administratorów. Pokażemy Ci, jak można je wykorzystać w PowerShell pod nowoczesnymi systemami Windows.

Nie tylko początkujący w programowaniu i językach skryptowych, ale także wielu „doświadczonych administratorów” po prostu kręci z rozpaczą głowami, gdy omawiane są wyrażenia regularne. Hieroglify, których doświadczeni administratorzy Uniksa używali, aby zademonstrować swoim użytkownikom, jak potężne może być niesławne polecenie grep – jeśli są używane poprawnie – wydają się zbyt mylące. Ale nie tylko z programami powłoki Unix / Linux, ale także z nowoczesnym PowerShell, który jest integralną częścią wszystkich obecnych klienckich i serwerowych systemów operacyjnych Windows, możesz wydajnie pracować z wyrażeniami regularnymi. PowerShell obsługuje cały zakres wyrażeń regularnych udostępnianych przez platformę .NET.

W tym artykule wyjaśniamy podstawy i wykorzystujemy całą serię przykładów, aby pokazać, że te tajemnicze znaki można bardzo dobrze wykorzystać w praktyce.

Wyrażenia regularne są używane głównie przy dokonywaniu porównań lub na przykład zastępowaniu wartości i znaków. Oprócz operatorów do bezpośredniego porównywania wartości, takich jak „-eq” (równe) czy -gt (większe), tzw. operator podobieństwa „-podobny” (i „-niepodobny”) oraz operator zastępczy "-replace" i operatory umowy "-dopasuj "i -unmatch" dla kategorii operatorów porównania.

Spośród nich "-replace", a także "-match" i "-unmatch" mogą obsługiwać zwykłe znaki, podczas gdy operator "-like" działa tylko ze znakiem wieloznacznym "*", który jest używany dla dowolnej liczby znaków stoi. Tak więc następujące dwa wywołania wyświetlają dokładnie to samo wyjście na ekranie:

Uzyskaj usługę | gdzie {$ _. status -jak "uruchomiony"}

Uzyskaj usługę | gdzie {$ _. status -match "running"}

Oba wywołania pokazują wszystkie aktywne (działające) procesy w odpowiednim systemie. Różnica polega na tym, że przy użyciu "-match" i zwykłych znaków porównania można przeprowadzić znacznie dokładniej i w bardziej ukierunkowany sposób. W tym kontekście ważna jest również uwaga: w tym typie zapytania nie jest rozróżniana wielkość liter — oznacza to, że nie rozróżnia się wielkich i małych liter, a oba wywołania znajdują procesy oznaczone jako „uruchomione” oraz procesy, które są na przykład jako „Uruchomiony”.

  • Kolbowicz Marek
  • November 24,2021

Leave a Reply