Przekazywanie danych przy użyciu elementu ByValue

Zakończone

Gdy dane są przekazywane przy użyciu elementu ByValue, parametr może akceptować kompletne obiekty z potoku, gdy te obiekty są typu, który akceptuje parametr. Jedno polecenie może mieć więcej niż jeden parametr akceptujący dane wejściowe potoku ByValue, ale każdy parametr musi akceptować inny rodzaj obiektu.

Na przykład polecenie Get-Service może akceptować dane wejściowe potoku ByValue zarówno dla parametrów –InputObject , jak i –Name . Każdy z tych parametrów akceptuje inny rodzaj obiektu. –InputObject akceptuje obiekty typu ServiceController, a –Name akceptuje obiekty typu Ciąg. Rozważmy następujący przykład:

'BITS','WinRM' | Get-Service

W tym miejscu dwa obiekty ciągów są przesyłane potokowo do usługi Get-Service. Dołączają do parametru –Name, ponieważ ten parametr akceptuje ten rodzaj obiektu ByValue z potoku.

Aby przewidzieć funkcję wykonywaną przez program Windows PowerShell z obiektem w potoku, należy określić rodzaj obiektu w potoku. W tym celu można przekazać obiekt potokowo do elementu Get-Member. Pierwszy wiersz danych wyjściowych informuje o rodzaju obiektu zawartego w potoku. Na przykład:

PS C:\> "BITS","WinRM" | Get-Member
 
   TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------

W tym miejscu potok zawiera obiekty typu System.String. Program Windows PowerShell często skraca nazwy typów do uwzględnienia tylko ostatniej części. W tym przykładzie ostatnia część to Ciąg.

Następnie zbadasz pełną pomoc dotyczącą następnego polecenia w potoku. W tym przykładzie jest to polecenie Get-Service i można stwierdzić, że parametry –InputObject i –Name akceptują dane wejściowe z potoku ByValue. Ponieważ potok zawiera obiekty typu Ciąg, a parametr –Name akceptuje obiekty typu Ciąg z potoku ByValue, obiekty w potoku dołączają się do parametru –Name .

Typy obiektów ogólnych

Program Windows PowerShell rozpoznaje dwa ogólne rodzaje obiektów, Object i PSObject. Parametry akceptujące tego rodzaju obiekty mogą akceptować dowolny rodzaj obiektu. Po wykonaniu powiązania parametru potoku ByValue program Windows PowerShell najpierw wyszukuje najbardziej konkretny typ obiektu. Jeśli potok zawiera ciąg, a parametr może akceptować ciąg, ten parametr otrzyma obiekty.

Jeśli nie ma dopasowania do określonego typu danych, program Windows PowerShell spróbuje dopasować ogólne typy danych. Dlatego polecenia takie jak Sort-Object i Select-Object działają. Każde z tych poleceń ma parametr o nazwie –InputObject, który akceptuje obiekty typu PSObject z potoku ByValue. Dlatego można przekazać do tych poleceń dowolny typ obiektu. Ich parametr –InputObject otrzyma dowolny obiekt z potoku, ponieważ akceptuje obiekty dowolnego rodzaju.