Share this post:

To jest część serii blogów pisanych przez Adama Gordona. W każdym tygodniu Adam przeprowadzi Cię przez polecenie PowerShell, pokazując kiedy i jak używać każdego z nich. W tym tygodniu, Adam omawia Where-Object.

Kiedy używać Where-Object

Ccmdlet Where-Object wybiera obiekty, które mają określone wartości właściwości z kolekcji obiektów, które są do niego przekazywane.

Począwszy od Windows PowerShell 3.0, istnieją dwa różne sposoby konstruowania polecenia Where-Object.

  • Blok skryptu. Można użyć bloku skryptu do określenia nazwy właściwości, operatora porównania i wartości właściwości. Polecenie Where-Object zwraca wszystkie obiekty, dla których wyrażenie bloku skryptu jest prawdziwe.
  • Instrukcja porównania. Można również napisać instrukcję porównania, która jest znacznie bardziej podobna do języka naturalnego.

Jak używać Where-Object

Get stopped services:

(1.) Get-Service | Where-Object {$_.Status -eq „Stopped”}

(2.) Get-Service | where Status -eq „Stopped”

Polecenia te uzyskują listę wszystkich usług, które są obecnie zatrzymane.

Zmienna automatyczna $_ reprezentuje każdy obiekt, który jest przekazywany do cmdleta Where-Object.

Polecenie (1.) używa formatu bloku skryptu, polecenie (2.) używa formatu deklaracji porównania.

Get-Process | Where-Object {$_.WorkingSet -GT 25000*1024}
Get-Process | Where-Object WorkingSet -GT (25000*1024)

Te polecenia wyświetlają listę procesów, które mają zestaw roboczy większy niż 25 000 kilobajtów (KB).

Ponieważ wartość właściwości WorkingSet jest przechowywana w bajtach, wartość 25 000 jest mnożona przez 1 024.

Składnia bloku skryptu i instrukcji jest równoważna i może być używana zamiennie.

Użyj formatu instrukcji porównania:

(1.) Get-Process | Where-Object -Property Handles -GE -Value 1000

(2.) Get-Process | where Handles -GE 1000

Niniejszy przykład pokazuje, jak używać nowego formatu instrukcji porównania cmdleta Where-Object.

Polecenie (1.) używa formatu instrukcji porównania. W tym poleceniu nie są używane aliasy, a wszystkie parametry zawierają nazwę parametru.

Polecenie (2.) jest bardziej naturalnym użyciem formatu polecenia porównania. Alias where jest zastępowany nazwą polecenia cmdlet Where-Object, a wszystkie opcjonalne nazwy parametrów są pomijane.

Użycie wielu warunków:

Get-Module -ListAvailable | where {($_.Name -notlike „Microsoft*” -and $_.Name -notlike „PS*”) -and $_.HelpInfoUri}

Polecenie wykorzystuje parametr -ListAvailable cmdletu Get-Module, aby uzyskać wszystkie moduły na komputerze.

Operator potoku (|) wysyła moduły do cmdleta Where-Object, który pobiera moduły, których nazwy nie zaczynają się od Microsoft lub PS i mają wartość dla właściwości HelpInfoURI, która mówi PowerShellowi, gdzie znaleźć zaktualizowane pliki pomocy dla modułu.

Deklaracje porównania są połączone operatorem logicznym And.

Przykład wykorzystuje format polecenia bloku skryptu.

UWAGA: Operatory logiczne, takie jak And i Or, są ważne tylko w blokach skryptu. Nie można ich używać w formacie instrukcji porównania polecenia Where-Object.

Poznaj polecenie z zeszłego tygodnia: Get-WinEvent.

Potrzebujesz szkolenia PowerShell? Sprawdź szkolenia ITProTV z PowerShell online.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.