Select-Object -ExcludeProperty, czemu nie działa?

By PowerShell

Polecenie Select-Object służy do wybierania niezbędnych nam właściwości obiektów. Wykorzystujemy w tym celu (jawnie bądź nie) parametr -Property, coś jak poniżej.

(Get-Process)[0] | Select-Object -Property Name, FileVersion, Path, *MemorySize
# lub szybcie z wykorzystaniem aliasu oraz parametru pozycyjnego
(Get-Process)[0] | select Name, FileVersion, Path, *MemorySize

Co, jeśli chcemy cały obiekt z pominięciem 2-3 właściwość? W tym celu można wykorzystać -ExcludeProperty. Wydawać by się mogło, że należy użyć jak poniżej, jednak wynik, może zaskoczyć.

(Get-Process)[0] | Select-Object -ExcludeProperty ProcessName
Select-Object -ExcludeProperty

⚠️ PowerShell do wersji 5.1 wymaga aby wraz z ExcludeProperty, użyć parametru Property.

(Get-Process)[0] | Select-Object -ExcludeProperty ProcessName -Property *
 
(Get-Process)[0] | Select-Object -ExcludeProperty ProcessName -Property CPU, ProcessName

Od PowerShell 6 zostało to poprawione i nie ma potrzeby pamiętania o tym niuansie. Domyślnie w takiej sytuacji jest zwracany cały obiekt z pominięciem zdefiniowanych właściwości w parametrze -ExcludeProperty.

Select-Object -ExcludeProperty PowerShell 7

Czyli kolejny, choć bardzo mały argument za tym aby przejść na PowerShell 7 😉.

22 Najważniejsze Wskazówki Pisania Skryptów PowerShell

No comments yet.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

× Close