Out-File
Invia l'output a un file.
Sintassi
Out-File
[-FilePath] <string>
[[-Encoding] <string>]
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Out-File
[[-Encoding] <string>]
-LiteralPath <string>
[-Append]
[-Force]
[-NoClobber]
[-Width <int>]
[-NoNewline]
[-InputObject <psobject>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il Out-File
cmdlet 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.
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
utilizza il parametro FilePath e crea un file nella directory corrente denominata Process.txt. Il Get-Content
comando 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 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
utilizza 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 Get-Process
cmdlet ottiene l'elenco dei processi in esecuzione nel computer locale. Gli oggetti Process vengono archiviati nella variabile . $Procs
Out-File
utilizza 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 vengano troncati.
Esempio 4: Usare un provider e inviare l'output a un file
Questo esempio illustra come usare il Out-File
cmdlet quando non si è in un'unità 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 del Registro di Alias:
sistema . Il Get-Location
cmdlet visualizza il percorso completo per Alias:
.
Get-ChildItem
invia gli oggetti verso il basso nella 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 e gli operatori di Out-File
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. Se non viene specificata alcuna codifica , il cmdlet usa la codifica predefinita. Tale codifica potrebbe non corrispondere alla codifica del file di destinazione. Si tratta dello stesso comportamento dell'operatore di reindirizzamento (>>
).
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Encoding
Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è unicode
.
I valori accettabili per questo parametro sono i seguenti:
ascii
Usa il set di caratteri ASCII (a 7 bit).bigendianunicode
Usa UTF-16 con l'ordine dei byte big-endian.default
Usa la codifica che corrisponde alla tabella codici attiva del sistema (in genere ANSI).oem
Usa la codifica corrispondente alla tabella codici OEM corrente del sistema.string
è uguale aunicode
.unicode
Usa UTF-16 con l'ordine dei byte little-endian.unknown
è uguale aunicode
.utf7
Usa UTF-7.utf8
Usa UTF-8.utf32
Usa UTF-32 con l'ordine dei byte little-endian.
Tipo: | String |
Valori accettati: | ASCII, BigEndianUnicode, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32 |
Posizione: | 1 |
Valore predefinito: | Unicode |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-FilePath
Specifica il percorso del file di output.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | PSObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-LiteralPath
Specifica il percorso del file di output. Il parametro LiteralPath viene usato esattamente come viene tipizzato. I caratteri jolly non vengono accettati. Se il percorso include caratteri di escape, racchiuderlo 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.
Tipo: | String |
Alias: | PSPath |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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 un file esiste nel percorso specificato, Out-File
sovrascrive il file senza avviso.
Tipo: | SwitchParameter |
Alias: | NoOverwrite |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 desidera controllare la larghezza per tutte le chiamate di e gli operatori di Out-File
reindirizzamento (>
e >>
), impostare $PSDefaultParameterValues['out-file:width'] = 2000
prima di usare Out-File
.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe qualsiasi oggetto a questo cmdlet.
Output
None
Questo cmdlet non restituisce output.
Note
Gli oggetti di input vengono formattati automaticamente come 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.