Opis potokówUnderstanding pipelines

Potoki zachowywać się jak szereg podłączonych segmentów potoku.Pipelines act like a series of connected segments of pipe. Przenoszenie do potoku elementów przechodzi przez każdy z segmentów.Items moving along the pipeline pass through each segment. Aby utworzyć potok w programie PowerShell, łączenie poleceń, wraz z operatora potoku "|".To create a pipeline in PowerShell, you connect commands together with the pipe operator "|". Dane wyjściowe każdego polecenia jest używany jako dane wejściowe dla następnego polecenia.The output of each command is used as input to the next command.

Oznaczenie użyte w potokach przypomina notację używaną w innych powłoki.The notation used for pipelines is similar to the notation used in other shells. Na pierwszy rzut oka może nie być jasne, jak potoków różnią się w programie PowerShell.At first glance, it may not be apparent how pipelines are different in PowerShell. Mimo, że tekst jest widoczne na ekranie, programu PowerShell przekazuje obiektów, nie tekstu między poleceniami.Although you see text on the screen, PowerShell pipes objects, not text, between commands.

Potoku programu PowerShellThe PowerShell pipeline

Potoki są prawdopodobnie najbardziej wartościowych pojęcia używane w interfejsów z wierszem polecenia.Pipelines are arguably the most valuable concept used in command-line interfaces. W przypadku poprawnie potoki zmniejszyć nakład pracy przy użyciu poleceń złożone i ułatwić Zobacz przepływ pracy dla poleceń.When used properly, pipelines reduce the effort of using complex commands and make it easier to see the flow of work for the commands. Każde polecenie w potoku (nazywany elementem potoku) przekazuje dane wyjściowe do następnego polecenia w potoku, element przez element.Each command in a pipeline (called a pipeline element) passes its output to the next command in the pipeline, item-by-item. Polecenia nie ma potrzeby obsługi więcej niż jeden element w danym momencie.Commands don't have to handle more than one item at a time. Wynik jest użycie niższych zasobów oraz możliwość rozpocząć od razu uzyskiwanie danych wyjściowych.The result is reduced resource consumption and the ability to begin getting the output immediately.

Na przykład, jeśli używasz Out-Host po prostu wymusić wyświetlania strony Strona danych wyjściowych z innego polecenia, wyszukuje dane wyjściowe, takie jak zwykły tekst wyświetlany na ekranie, podzielone na strony:For example, if you use the Out-Host cmdlet to force a page-by-page display of output from another command, the output looks just like the normal text displayed on the screen, broken up into pages:

Get-ChildItem -Path C:\WINDOWS\System32 | Out-Host -Paging
    Directory: C:\WINDOWS\system32

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        4/12/2018   2:15 AM                0409
d-----        5/13/2018  11:31 PM                1033
d-----        4/11/2018   4:38 PM                AdvancedInstallers
d-----        5/13/2018  11:13 PM                af-ZA
d-----        5/13/2018  11:13 PM                am-et
d-----        4/11/2018   4:38 PM                AppLocker
d-----        5/13/2018  11:31 PM                appmgmt
d-----        7/11/2018   2:05 AM                appraiser
d---s-        4/12/2018   2:20 AM                AppV
d-----        5/13/2018  11:10 PM                ar-SA
d-----        5/13/2018  11:13 PM                as-IN
d-----        8/14/2018   9:03 PM                az-Latn-AZ
d-----        5/13/2018  11:13 PM                be-BY
d-----        5/13/2018  11:10 PM                BestPractices
d-----        5/13/2018  11:10 PM                bg-BG
d-----        5/13/2018  11:13 PM                bn-BD
d-----        5/13/2018  11:13 PM                bn-IN
d-----        8/14/2018   9:03 PM                Boot
d-----        8/14/2018   9:03 PM                bs-Latn-BA
d-----        4/11/2018   4:38 PM                Bthprops
d-----        4/12/2018   2:19 AM                ca-ES
d-----        8/14/2018   9:03 PM                ca-ES-valencia
d-----        5/13/2018  10:46 PM                CatRoot
d-----        8/23/2018   5:07 PM                catroot2
<SPACE> next page; <CR> next line; Q quit
...

Stronicowanie także ogranicza wykorzystanie Procesora, ponieważ przetwarzanie przesyła do Out-Host polecenia cmdlet, gdy ma ona całą stronę gotowej do wyświetlenia.Paging also reduces CPU utilization because processing transfers to the Out-Host cmdlet when it has a complete page ready to display. Polecenia cmdlet, które należy poprzedzić go w potoku zatrzymać wykonywanie aż do następnej strony w danych wyjściowych.The cmdlets that precede it in the pipeline pause execution until the next page of output is available.

Możesz zobaczyć różnicę Menedżera zadań Windows do monitorowania procesora CPU i użycie pamięci przez program PowerShell.You can see the difference Windows Task Manager to monitor CPU and memory used by PowerShell. Uruchom następujące polecenie: Get-ChildItem C:\Windows -Recurse.Run the following command: Get-ChildItem C:\Windows -Recurse. Porównaj użycie Procesora i pamięci do tego polecenia: Get-ChildItem C:\Windows -Recurse | Out-Host -Paging.Compare the CPU and memory usage to this command: Get-ChildItem C:\Windows -Recurse | Out-Host -Paging.

Obiekty w potokuObjects in the pipeline

Po uruchomieniu polecenia cmdlet programu PowerShell, zostaną wyświetlone dane wyjściowe tekstu, ponieważ jest on wymagany do reprezentowania obiektów jako tekst w oknie konsoli.When you run a cmdlet in PowerShell, you see text output because it is necessary to represent objects as text in a console window. Tekst wyjściowy może nie wyświetlać wszystkich właściwości obiektu są dane wyjściowe.The text output may not display all of the properties of the object being output.

Na przykład, rozważmy Get-Location polecenia cmdlet.For example, consider the Get-Location cmdlet. Jeśli uruchamiasz Get-Location Twojej bieżącej lokalizacji jest głównym na dysku C, zobacz następujące dane wyjściowe:If you run Get-Location while your current location is the root of the C drive, you see the following output:

PS> Get-Location

Path
----
C:\

Tekst wyjściowy znajduje się podsumowanie informacji, nie pełną reprezentację obiektu zwróconego przez Get-Location.The text output is a summary of information, not a complete representation of the object returned by Get-Location. W pozycji w danych wyjściowych jest dodawany przez proces, która formatuje dane do wyświetlenia na ekranie.The heading in the output is added by the process that formats the data for onscreen display.

Gdy przekazać dane wyjściowe do Get-Member polecenia cmdlet, możesz uzyskać informacje na temat obiektu zwróconego przez Get-Location.When you pipe the output to the Get-Member cmdlet you get information about the object returned by Get-Location.

PS> Get-Location | Get-Member
   TypeName: System.Management.Automation.PathInfo

Name         MemberType Definition
----         ---------- ----------
Equals       Method     bool Equals(System.Object obj)
GetHashCode  Method     int GetHashCode()
GetType      Method     type GetType()
ToString     Method     string ToString()
Drive        Property   System.Management.Automation.PSDriveInfo Drive {get;}
Path         Property   string Path {get;}
Provider     Property   System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property   string ProviderPath {get;}

Get-Location Zwraca PATHINFO zawiera obiekt, który zawiera bieżącą ścieżkę i inne informacje.Get-Location returns a PathInfo object that contains the current path and other information.