Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
PowerShell offre diversi cmdlet che consentono di controllare direttamente l'output dei dati. Questi cmdlet condividono due caratteristiche importanti.
In primo luogo, in genere trasformano i dati in una forma di testo. A tale scopo, i dati vengono restituiti ai componenti di sistema che richiedono l'input di testo. Ciò significa che devono rappresentare gli oggetti come testo. Di conseguenza, il testo viene formattato come viene visualizzato nella finestra della console di PowerShell.
In secondo luogo, questi cmdlet usano il verbo di PowerShell Out perché inviano informazioni da PowerShell a un'altra posizione.
Output della console
Per impostazione predefinita, PowerShell invia i dati alla finestra host, che è esattamente ciò che fa il Out-Host cmdlet. L'uso principale del cmdlet Out-Host è il paging. Ad esempio, il comando seguente usa Out-Host per paginare l'output del Get-Command cmdlet:
Get-Command | Out-Host -Paging
La visualizzazione della finestra host è esterna a PowerShell. Questo aspetto è importante perché quando i dati vengono inviati da PowerShell, vengono effettivamente rimossi. È possibile verificarlo se si tenta di creare una pipeline che pagine i dati nella finestra host e quindi tentare di formattarla come elenco, come illustrato di seguito:
Get-Process | Out-Host -Paging | Format-List
È possibile che il comando visualizzi pagine di informazioni sul processo in formato elenco. Visualizza invece l'elenco tabulare predefinito:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
101 5 1076 3316 32 0.05 2888 alg
...
618 18 39348 51108 143 211.20 740 explorer
257 8 9752 16828 79 3.02 2560 explorer
...
<SPACE> next page; <CR> next line; Q quit
...
Il Out-Host cmdlet invia i dati direttamente alla console, quindi il Format-List comando non riceve mai nulla da formattare.
Il modo corretto per strutturare questo comando consiste nell'inserire il Out-Host cmdlet alla fine della pipeline, come illustrato di seguito. In questo modo, i dati del processo vengono formattati in un elenco prima di essere paginati e visualizzati.
Get-Process | Format-List | Out-Host -Paging
Id : 2888
Handles : 101
CPU : 0.046875
Name : alg
...
Id : 740
Handles : 612
CPU : 211.703125
Name : explorer
Id : 2560
Handles : 257
CPU : 3.015625
Name : explorer
...
<SPACE> next page; <CR> next line; Q quit
...
Questo vale per tutti i cmdlet Out . Un cmdlet Out deve essere sempre visualizzato alla fine della pipeline.
Nota
Tutti i cmdlet Out eseguono il rendering dell'output come testo, usando la formattazione applicata per la finestra della console, inclusi i limiti di lunghezza della riga.
Eliminazione dell'output
Il Out-Null cmdlet è progettato per eliminare immediatamente qualsiasi input ricevuto. Ciò è utile per eliminare i dati non necessari che si ottengono come effetto collaterale dell'esecuzione di un comando. Quando si digita il comando seguente, non viene restituito alcun elemento dal comando :
Get-Command | Out-Null
Il Out-Null cmdlet non elimina l'output degli errori. Ad esempio, se si immette il comando seguente, viene visualizzato un messaggio che informa che PowerShell non riconosce Is-NotACommand:
PS> Get-Command Is-NotACommand | Out-Null
Get-Command : 'Is-NotACommand' isn't recognized as a cmdlet, function, operable program, or script file.
At line:1 char:12
+ Get-Command <<<< Is-NotACommand | Out-Null
Stampa di dati
Out-Printerè disponibile solo nelle piattaforme Windows.
È possibile stampare i dati usando il Out-Printer cmdlet . Il Out-Printer cmdlet usa la stampante predefinita se non si specifica un nome di stampante. È possibile usare qualsiasi stampante basata su Windows specificandone il nome visualizzato. Non c'è bisogno di alcun tipo di mapping delle porte della stampante o anche di una stampante fisica reale.
Ad esempio, se sono installati gli strumenti per la creazione di immagini dei documenti di Microsoft Office, è possibile inviare i dati a un file di immagine digitando:
Get-Command -Name Get-* | Out-Printer -Name 'Microsoft Office Document Image Writer'
Salvataggio dei dati
È possibile inviare l'output a un file anziché alla finestra della console usando il Out-File cmdlet . La riga di comando seguente invia un elenco di processi al file C:\temp\processlist.txt:
Get-Process | Out-File -FilePath C:\temp\processlist.txt
I risultati dell'uso del Out-File cmdlet potrebbero non essere quello previsto se si usa il reindirizzamento dell'output tradizionale. Per comprenderne il comportamento, è necessario essere consapevoli del contesto in cui opera il Out-File cmdlet.
In Window PowerShell 5.1 il Out-File cmdlet crea un file Unicode. Alcuni strumenti, che prevedono file ASCII, non funzionano correttamente con il formato di output predefinito. È possibile modificare il formato di output predefinito in ASCII usando il parametro Encoding :
Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ascii
Out-File formatta il contenuto del file in modo che sia simile all'output della console. In questo modo l'output viene troncato esattamente come avviene in una finestra della console nella maggior parte dei casi. Ad esempio, se si esegue il comando seguente:
Get-Command | Out-File -FilePath C:\temp\output.txt
L'output sarà simile a questo:
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-Content Add-Content [-Path] <String[...
Cmdlet Add-History Add-History [[-InputObject] ...
...
Per ottenere l'output che non forza il ritorno a capo riga in modo che corrisponda alla larghezza dello schermo, è possibile usare il parametro Width per specificare la larghezza della riga. Poiché Width è un parametro integer a 32 bit, il valore massimo che può avere è 2147483647. Digitare quanto segue per impostare la larghezza della riga su questo valore massimo:
Get-Command | Out-File -FilePath C:\temp\output.txt -Width 2147483647
Il Out-File cmdlet è più utile quando si desidera salvare l'output come visualizzato nella console.