Entrambe le risposte danno quindi alcune informazioni utili sul pipelining. Tuttavia, c'è ancora molto da dire.
In primo luogo, per indirizzare direttamente la tua domanda, hai posto due possibili modi in cui la pipeline potrebbe funzionare. E hanno entrambi ragione ... a seconda dei cmdlet su entrambi i lati del tubo! Tuttavia, il modo in cui la pipeline deve essere è più vicino alla seconda nozione: gli oggetti vengono elaborati uno alla volta. (Anche se non è garantito che un oggetto vada avanti prima che venga avviato il prossimo perché ogni componente nella pipeline è asincrono, come menzionato da S Nash.)
Quindi, cosa intendo per "dipende dal tuo cmdlet "? Se si parla di cmdlet forniti da Microsoft, probabilmente funzioneranno tutti come ci si aspetterebbe, passando ogni oggetto attraverso la pipeline nel modo più efficiente possibile. Ma se parli di cmdlet che scrivi, dipende da come li scrivi: è altrettanto facile scrivere cmdlet che non riescono a fare il pipeline appropriato come quelli che hanno successo!
Ci sono due principali tipi di problemi:
- generano tutta l'uscita prima di emettere qualsiasi nella tubazione, o
- recuperare tutto input pipeline prima di elaborare qualsiasi.
Ciò che si vuole sforzare, naturalmente, è elaborare ogni input non appena viene ricevuto ed emettere l'output non appena viene determinato.Per esempi dettagliati di tutti questi vedi il mio articolo, Ins and Outs of the PowerShell Pipeline, appena pubblicato su Simple-Talk.com.
fonte
2015-11-07 00:55:39