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 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 operartor 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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Richiede conferma 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 dei byte big-endian.
  • bigendianutf32: codifica in formato UTF-32 usando l'ordine 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 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 Encoding consente anche ID numerici di tabelle codici registrate (ad esempio ) o nomi di stringhe di tabelle 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ù consigliato per l'uso. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7 per il parametro Encoding .

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 sostituisce le 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 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.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

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 gli effetti dell'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 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.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

PSObject

È 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.

PowerShell 7.2 ha aggiunto la possibilità di controllare il rendering delle sequenze di escape ANSI. L'output anSI decorato che viene passato a Out-File può essere modificato in base all'impostazione della $PSStyle.OutputRendering proprietà . Per altre informazioni, vedere about_ANSI_Terminals.