Out-File
Invia l'output a un file.
Sintassi
Out-File
[-FilePath] <string>
[[-Encoding] <Encoding>]
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Out-File
[[-Encoding] <Encoding>]
-LiteralPath <string>
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il cmdlet invia l'output Out-File
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.
Quando è necessario specificare i parametri per l'output, usare Out-File
anziché l'operatore di reindirizzamento (>
). 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 Get-Process
cmdlet ottiene l'elenco dei processi in esecuzione nel computer locale. Gli oggetti Process vengono inviati alla pipeline al Out-File
cmdlet. Out-File
usa il parametro FilePath e crea un file nella directory corrente denominata Process.txt. Il Get-Content
comando ottiene contenuto dal file e lo visualizza nella console di PowerShell.
Esempio 2: Impedire che un file esistente venga sovrascritto
In questo esempio viene impedito l'sovrascritto 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 Get-Process
cmdlet ottiene l'elenco dei processi in esecuzione nel computer locale. Gli oggetti Process vengono inviati alla pipeline al Out-File
cmdlet. Out-File
usa il parametro FilePath e tenta di scrivere in un file nella directory corrente denominata Process.txt. Il parametro NoClobber impedisce che il file venga sovrascritto e visualizzi un messaggio che il file esiste già.
Esempio 3: Inviare l'output a un file in formato ASCII
In questo esempio viene illustrato 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 Get-Process
cmdlet 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 di processo nel $Procs
file Process.txt. Il parametro Codifica 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
In questo esempio viene illustrato come usare il cmdlet quando non si è in un'unità Out-File
del provider FileSystem . Usare il Get-PSProvider
cmdlet per visualizzare i provider nel computer locale. Per altre informazioni, vedere 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 Set-Location
comando usa il parametro Path per impostare il percorso corrente sul provider Alias:
del Registro di sistema . Il Get-Location
cmdlet visualizza il percorso completo per Alias:
.
Get-ChildItem
invia oggetti alla pipeline al Out-File
cmdlet. Out-File
usa il parametro FilePath per specificare il percorso completo e il nome file per l'output, C:\TestDir\AliasNames.txt. Il Get-Content
cmdlet 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
In questo esempio viene $PSDefaultParameterValues
usato per impostare il Width
parametro per tutte le chiamate di Out-File
e gli operartor di reindirizzamento (>
e >>
) su 2000. Ciò garantisce che ovunque all'interno dell'ambito corrente i dati formattati nella tabella nel file, PowerShell usa una larghezza di riga pari a 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Richiede la conferma dell'utente prima di eseguire il cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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).bigendianunicode
: codifica in formato UTF-16 usando l'ordine di byte big-endian.bigendianutf32
: codifica in formato UTF-32 usando l'ordine di byte big-endian.oem
: usa la codifica predefinita per i programmi MS-DOS e console.unicode
: codifica in formato UTF-16 usando l'ordine di byte little-endian.utf7
: codifica in formato UTF-7.utf8
: codifica in formato UTF-8.utf8BOM
: codifica in formato UTF-8 con Byte Order Mark (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 Codifica consente anche ID numerici di pagine codici registrate (ad esempio ) o nomi di stringa di pagine codici registrate (ad esempio -Encoding 1251
-Encoding "windows-1251"
). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.
Nota
UTF-7* non è più consigliabile usare. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7
per il parametro Codifica .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Specifica il percorso del file di output.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Esegue l'override dell'attributo di sola lettura e sovrascrive un file di sola lettura esistente. Il parametro Force non esegue l'override delle restrizioni di sicurezza.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specifica gli oggetti da scrivere nel file. Immettere una variabile che contiene gli oggetti oppure digitare un comando o un'espressione che ottiene gli oggetti.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Specifica il percorso del file di output. Il parametro LiteralPath viene usato esattamente come digitato. I caratteri jolly non sono accettati. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare i caratteri come sequenze di escape. Per altre informazioni, vedere about_Quoting_Rules.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoClobber
NoClobber impedisce la sovrascrizione di un file esistente e visualizza un messaggio che il file esiste già. Per impostazione predefinita, se un file esiste nel percorso specificato, Out-File
sovrascrive il file senza avviso.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Width
Specifica il numero massimo di caratteri in ogni riga di output. Eventuali caratteri aggiuntivi vengono troncati e non portati a capo. 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 vuole controllare la larghezza per tutte le chiamate di e gli operatori di reindirizzamento ( e ), impostare $PSDefaultParameterValues['out-file:width'] = 2000
prima di Out-File
usare Out-File
.>>
>
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile eseguire la pipe di qualsiasi oggetto a questo cmdlet.
Output
None
Questo cmdlet non restituisce output.
Note
Gli oggetti di input vengono formattati automaticamente nel terminale, ma è possibile usare un Format-*
cmdlet 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 Out-File
cmdlet, usare la pipeline. In alternativa, è possibile archiviare i dati in una variabile e usare il parametro InputObject per passare i dati al Out-File
cmdlet.
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. Output con decorazione ANSI che viene passato a Out-File
può essere modificato in base all'impostazione della $PSStyle.OutputRendering
proprietà. Per altre informazioni, vedere about_ANSI_Terminals.