Rozwiń wartości właściwości

Zakończone

Za pomocą poleceń nawiasów można podać dane wejściowe parametru bez użycia potoku. W niektórych przypadkach jednak może być konieczne manipulowanie obiektami utworzonymi za pomocą polecenia nawiasu, tak aby dane wyjściowe polecenia miały typ wymagany przez parametr .

Możesz na przykład wyświetlić listę wszystkich procesów uruchomionych na każdym komputerze w domenie. W tym przykładzie załóżmy, że masz bardzo małą domenę laboratorium zawierającą tylko kilka komputerów. Listę wszystkich komputerów w domenie można uzyskać, uruchamiając następujące polecenie:

Get-ADComputer –Filter *

Jednak to polecenie generuje obiekty typu ADComputer. Nie można użyć tych obiektów bezpośrednio w poleceniu nawiasu, takim jak w następującym poleceniu:

Get-Process –ComputerName (Get-ADComputer –Filter *)

Parametr –ComputerName oczekuje obiektów typu String. Jednak polecenie w nawiasach nie generuje obiektów typu Ciąg znaków. Parametr –ComputerName chce tylko nazwy komputera. Jednak polecenie udostępnia obiekt zawierający nazwę, wersję systemu operacyjnego i kilka innych właściwości.

Możesz wypróbować następujące polecenie:

Get-Process –ComputerName (Get-ADComputer –Filter * | Select-Object –Property Name)

To polecenie wybiera tylko właściwość Name . Ta właściwość jest nadal elementem członkowskim całego obiektu ADComputer . Jest to właściwość Name obiektu. Mimo że właściwość Name zawiera ciąg, nie jest to sam ciąg. Parametr –ComputerName oczekuje ciągu, a nie obiektu z właściwością. W związku z tym to polecenie też nie działa.

Następujące polecenie umożliwia przekazanie nazwy komputera jako ciągu do parametru -ComputerName :

Get-Process –ComputerName (Get-ADComputer –Filter * | Select-Object –ExpandProperty Name)

Parametr –ExpandProperty akceptuje jeden i tylko jedną nazwę właściwości. W przypadku użycia tego parametru tylko zawartość określonej właściwości jest generowany przez polecenie Select-Object. Niektóre osoby nazywają tę funkcję wyodrębniającą zawartość właściwości. Oficjalny opis funkcji rozszerza zawartość właściwości.

W poprzednim poleceniu wynik polecenia nawiasu jest kolekcją ciągów, które są przekazywane jako pojedyncze ciągi, a nie tablicy, i to jest to, czego oczekuje parametr –ComputerName . Polecenie będzie działać poprawnie; może jednak spowodować wystąpienie błędu, jeśli co najmniej jeden komputer nie może zostać osiągnięty w sieci.

Rozszerzanie wartości właściwości działa również podczas potokowania danych wyjściowych. Rozważmy następujący przykład:

Get-ADUser Ty -Properties MemberOf | Get-ADGroup

To polecenie zwraca błąd, ponieważ program Windows PowerShell nie może dopasować właściwości MemberOf do żadnej właściwości Get-ADGroup.

Jeśli jednak rozszerzysz wartość właściwości MemberOf , jak w poniższym przykładzie, program Windows PowerShell może dopasować wynikowe dane wyjściowe do wartości, którą get-ADGroup rozumie jako prawidłowe dane wejściowe:

Get-ADUser Ty -Properties MemberOf | Select-Object -ExpandProperty MemberOf | Get-ADGroup