Out-File
Invia l'output a un file.
Sintassi
ByPath (impostazione predefinita).
Out-File
[-FilePath] <string>
[[-Encoding] <Encoding>]
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Out-File
[[-Encoding] <Encoding>]
-LiteralPath <string>
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il cmdlet Out-File invia l'output a un file. Usa in modo implicito il sistema di formattazione di PowerShell per scrivere nel file. Il file riceve la stessa rappresentazione di visualizzazione del terminale. Ciò significa che l'output potrebbe non essere ideale per l'elaborazione a livello di codice, a meno che tutti gli oggetti di input non siano stringhe.
Il reindirizzamento dell'output di un comando di PowerShell (cmdlet, funzione, script) tramite l'operatore di reindirizzamento (>) è funzionalmente equivalente al piping a Out-File senza parametri aggiuntivi.
PowerShell 7.4 ha modificato il comportamento dell'operatore di reindirizzamento quando viene usato per reindirizzare il stdout flusso di un comando nativo. Per altre informazioni sul reindirizzamento, vedere about_Redirection.
Esempio
Esempio 1: Inviare l'output e creare un file
In questo esempio viene illustrato come inviare un elenco dei processi del computer locale a un file. Se il file non esiste, Out-File crea il file nel percorso specificato.
Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
29 22.39 35.40 10.98 42764 9 Application
53 99.04 113.96 0.00 32664 0 CcmExec
27 96.62 112.43 113.00 17720 9 Code
Il cmdlet Get-Process ottiene l'elenco dei processi in esecuzione nel computer locale. Gli oggetti processo vengono inviati alla pipeline al cmdlet Out-File.
Out-File usa il parametro FilePath e crea un file nella directory corrente denominata Process.txt. Il comando Get-Content ottiene il contenuto dal file e lo visualizza nella console di PowerShell.
Esempio 2: Impedire che un file esistente venga sovrascritto
In questo esempio viene impedita la sovrascrittura di un file esistente. Per impostazione predefinita, Out-File sovrascrive i file esistenti.
Get-Process | Out-File -FilePath .\Process.txt -NoClobber
Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Il cmdlet Get-Process ottiene l'elenco dei processi in esecuzione nel computer locale. Gli oggetti processo vengono inviati alla pipeline al cmdlet Out-File.
Out-File usa il parametro FilePath e tenta di scrivere in un file nella directory corrente denominata Process.txt. Il parametro NoClobber impedisce la sovrascrittura del file e visualizza un messaggio che indica che il file esiste già.
Esempio 3: Inviare l'output a un file in formato ASCII
Questo esempio illustra come codificare l'output con un tipo di codifica specifico.
$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ascii -Width 50
Il cmdlet Get-Process ottiene l'elenco dei processi in esecuzione nel computer locale. Gli oggetti process vengono archiviati nella variabile $Procs.
Out-File usa il parametro FilePath e crea un file nella directory corrente denominata Process.txt. Il parametro InputObject passa gli oggetti processo in $Procs al file Process.txt. Il parametro Encoding converte l'output in formato ASCII. Il parametro Width limita ogni riga del file a 50 caratteri in modo che alcuni dati possano essere troncati.
Esempio 4: Usare un provider e inviare l'output a un file
Questo esempio illustra come usare il cmdlet Out-File quando non si è in un'unità del provider FileSystem. Usare il cmdlet Get-PSProvider per visualizzare i provider nel computer locale. Per altre informazioni, consultare about_Providers.
PS> Set-Location -Path Alias:
PS> Get-Location
Path
----
Alias:\
PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt
PS> Get-Content -Path C:\TestDir\AliasNames.txt
CommandType Name
----------- ----
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias cat -> Get-Content
Il comando Set-Location usa il parametro Path per impostare il percorso corrente sul provider del Registro di sistema Alias:. Il cmdlet Get-Location visualizza il percorso completo per Alias:.
Get-ChildItem invia oggetti nella pipeline al cmdlet Out-File.
Out-File usa il parametro FilePath per specificare il percorso completo e il nome file per l'output, C:\TestDir\AliasNames.txt. Il cmdlet Get-Content usa il parametro Path e visualizza il contenuto del file nella console di PowerShell.
Esempio 5: Impostare la larghezza di output del file per l'intero ambito
Questo esempio usa $PSDefaultParameterValues per impostare il parametro Width per tutte le chiamate di Out-File e gli operatori di reindirizzamento (> e >>) su 2000. In questo modo si garantisce che ovunque all'interno dell'ambito corrente vengano restituiti dati formattati nella tabella nel file, PowerShell usa una larghezza di riga di 2000 anziché una larghezza di riga determinata dalla larghezza della console dell'host di PowerShell.
function DemoDefaultOutFileWidth() {
try {
$PSDefaultParameterValues['Out-File:Width'] = 2000
$logFile = "$PWD\logfile.txt"
Get-ChildItem Env:\ > $logFile
Get-Service -ErrorAction Ignore |
Format-Table -AutoSize |
Out-File $logFile -Append
Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
}
finally {
$PSDefaultParameterValues.Remove('Out-File:Width')
}
}
DemoDefaultOutFileWidth
Per altre informazioni su $PSDefaultParameterValues, vedere about_Preference_Variables.
Parametri
-Append
Aggiunge l'output alla fine di un file esistente.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | cfr |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Encoding
Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è utf8NoBOM.
I valori accettabili per questo parametro sono i seguenti:
-
ascii: usa la codifica per il set di caratteri ASCII (a 7 bit). -
ansi: Usa la codifica per la pagina di codice ANSI della cultura corrente. Questa opzione è stata aggiunta in PowerShell 7.4. -
bigendianunicode: Codifica nel formato UTF-16 utilizzando l'ordine dei byte big-endian. -
bigendianutf32: codifica in formato UTF-32 usando l'ordinamento dei byte big-endian. -
oem: usa la codifica predefinita per i programmi MS-DOS e console. -
unicode: codifica in formato UTF-16 usando l'ordine dei byte little-endian. -
utf7: codifica nel formato UTF-7. -
utf8: codifica in formato UTF-8. -
utf8BOM: codifica in formato UTF-8 con la marca d'ordine dei byte (BOM) -
utf8NoBOM: Codifica in formato UTF-8 senza Byte Order Mark (BOM) -
utf32: codifica in formato UTF-32.
A partire da PowerShell 6.2, il parametro Encoding consente anche ID numerici di tabelle codici registrate (ad esempio -Encoding 1251) o nomi di stringhe di tabelle codici registrate (ad esempio -Encoding "windows-1251"). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.
A partire da PowerShell 7.4, è possibile usare il valore Ansi per il parametro Codifica per passare l'ID numerico della pagina codice ANSI della cultura corrente senza doverlo specificare manualmente.
Annotazioni
Non è più consigliabile utilizzare UTF-7 *. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7 per il parametro Encoding.
Proprietà dei parametri
| Tipo: | Encoding |
| Valore predefinito: | UTF8NoBOM |
| Valori accettati: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 1 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-FilePath
Specifica il percorso del file di output.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | Percorso |
Set di parametri
ByPath
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Force
Esegue l'override dell'attributo di sola lettura e sovrascrive un file di sola lettura esistente. Il parametro Force non sostituisce le restrizioni di sicurezza.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-InputObject
Specifica gli oggetti da scrivere nel file. Immettere una variabile contenente gli oggetti o digitare un comando o un'espressione che ottiene gli oggetti .
Proprietà dei parametri
| Tipo: | PSObject |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-LiteralPath
Specifica il percorso del file di output. Il parametro LiteralPath viene usato esattamente come viene digitato. I caratteri jolly non vengono accettati. Se il percorso include caratteri di escape, racchiudilo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape. Per altre informazioni, vedere about_Quoting_Rules.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | PSPath, UP |
Set di parametri
ByLiteralPath
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-NoClobber
NoClobber impedisce la sovrascrittura di un file esistente e visualizza un messaggio che indica che il file esiste già. Per impostazione predefinita, se nel percorso specificato esiste un file, Out-File sovrascrive il file senza avviso.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | NoOverwrite |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-NoNewline
Specifica che il contenuto scritto nel file non termina con un carattere di nuova riga. Le rappresentazioni di stringa degli oggetti di input vengono concatenate per formare l'output. Non vengono inseriti spazi o nuove righe tra le stringhe di output. Nessuna nuova riga viene aggiunta dopo l'ultima stringa di output.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | Wi |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Width
Specifica il numero massimo di caratteri in ogni riga di output. Eventuali caratteri aggiuntivi vengono troncati, non di cui è stato eseguito il wrapping. Se questo parametro non viene usato, la larghezza viene determinata dalle caratteristiche dell'host. Il valore predefinito per la console di PowerShell è 80 caratteri. Se si desidera controllare la larghezza di tutte le chiamate di Out-File e gli operatori di reindirizzamento (> e >>), impostare $PSDefaultParameterValues['Out-File:Width'] = 2000 prima di usare Out-File.
Proprietà dei parametri
| Tipo: | Int32 |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
PSObject
È possibile passare qualsiasi oggetto come input a questo cmdlet.
Output
None
Questo cmdlet non restituisce alcun output.
Note
Gli oggetti di input vengono formattati automaticamente come nel terminale, ma è possibile usare un cmdlet Format-* per controllare in modo esplicito la formattazione dell'output nel file. Ad esempio, Get-Date | Format-List | Out-File out.txt
Per inviare l'output di un comando di PowerShell al cmdlet Out-File, usare la pipeline. In alternativa, è possibile archiviare i dati in una variabile e usare il parametro InputObject per passare i dati al cmdlet Out-File.
Out-File salva i dati in un file, ma non produce oggetti di output nella pipeline.
PowerShell 7.2 ha aggiunto la possibilità di controllare il rendering delle sequenze di escape ANSI. È possibile modificare l'output decorato con ANSI passato a Out-File in base all'impostazione della proprietà $PSStyle.OutputRendering. Per altre informazioni, vedere about_ANSI_Terminals.