Delen via


Out-File

Hiermee wordt uitvoer naar een bestand verzonden.

Syntaxis

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>]

Description

De Out-File cmdlet verzendt uitvoer naar een bestand. Het maakt impliciet gebruik van het opmaaksysteem van PowerShell om naar het bestand te schrijven. Het bestand ontvangt dezelfde weergaveweergave als de terminal. Dit betekent dat de uitvoer mogelijk niet ideaal is voor programmatische verwerking, tenzij alle invoerobjecten tekenreeksen zijn.

Het omleiden van de uitvoer van een PowerShell-opdracht (cmdlet, functie, script) met behulp van de omleidingsoperator (>) is functioneel gelijk aan piping naar Out-File zonder extra parameters. PowerShell 7.4 heeft het gedrag van de omleidingsoperator gewijzigd wanneer deze wordt gebruikt om de stdout-stroom van een systeemeigen opdracht om te leiden. Zie about_Redirection voor meer informatie over omleiding.

Voorbeelden

Voorbeeld 1: Uitvoer verzenden en een bestand maken

In dit voorbeeld ziet u hoe u een lijst met processen van de lokale computer naar een bestand verzendt. Als het bestand niet bestaat, Out-File maakt u het bestand in het opgegeven pad.

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

De Get-Process cmdlet haalt de lijst met processen op die worden uitgevoerd op de lokale computer. De procesobjecten worden via de pijplijn naar de Out-File cmdlet verzonden. Out-File gebruikt de parameter FilePath en maakt een bestand in de huidige map met de naam Process.txt. Met de Get-Content opdracht wordt inhoud uit het bestand opgehaald en weergegeven in de PowerShell-console.

Voorbeeld 2: Voorkomen dat een bestaand bestand wordt overschreven

In dit voorbeeld voorkomt u dat een bestaand bestand wordt overschreven. Bestaande bestanden worden standaard Out-File overschreven.

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
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

De Get-Process cmdlet haalt de lijst met processen op die worden uitgevoerd op de lokale computer. De procesobjecten worden via de pijplijn naar de Out-File cmdlet verzonden. Out-File gebruikt de parameter FilePath en probeert te schrijven naar een bestand in de huidige map met de naam Process.txt. De parameter NoClobber voorkomt dat het bestand wordt overschreven en geeft een bericht weer dat het bestand al bestaat.

Voorbeeld 3: Uitvoer verzenden naar een bestand in ASCII-indeling

In dit voorbeeld ziet u hoe u uitvoer coderen met een specifiek coderingstype.

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

De Get-Process cmdlet haalt de lijst met processen op die worden uitgevoerd op de lokale computer. De procesobjecten worden opgeslagen in de variabele. $Procs Out-File gebruikt de parameter FilePath en maakt een bestand in de huidige map met de naam Process.txt. De parameter InputObject geeft de procesobjecten $Procs door aan het bestand Process.txt. Met de coderingsparameter wordt de uitvoer geconverteerd naar de ASCII-indeling . De parameter Width beperkt elke regel in het bestand tot 50 tekens, zodat sommige gegevens mogelijk worden afgekapt.

Voorbeeld 4: Een provider gebruiken en uitvoer verzenden naar een bestand

In dit voorbeeld ziet u hoe u de Out-File cmdlet gebruikt wanneer u zich niet in een bestandssysteemproviderstation bevindt . Gebruik de Get-PSProvider cmdlet om de providers op uw lokale computer weer te geven. Zie about_Providers voor meer informatie.

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

De Set-Location opdracht gebruikt de parameter Path om de huidige locatie in te stellen op de registerprovider Alias:. De Get-Location cmdlet geeft het volledige pad voor Alias:. Get-ChildItem verzendt objecten in de pijplijn naar de Out-File cmdlet. Out-File gebruikt de parameter FilePath om het volledige pad en de bestandsnaam voor de uitvoer C :\TestDir\AliasNames.txt op te geven. De Get-Content cmdlet gebruikt de parameter Path en geeft de inhoud van het bestand weer in de PowerShell-console.

Voorbeeld 5: Breedte van bestandsuitvoer instellen voor volledig bereik

In dit voorbeeld wordt de $PSDefaultParameterValues Width parameter voor alle aanroepen van Out-File en de omleidingsoperators (> en >>) ingesteld op 2000. Dit zorgt ervoor dat powerShell overal binnen het huidige bereik gegevens uitvoert die zijn opgemaakt voor bestanden, een lijnbreedte van 2000 gebruikt in plaats van een lijnbreedte die wordt bepaald door de consolebreedte van de PowerShell-host.

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

Zie about_Preference_Variables voor meer informatie over$PSDefaultParameterValues.

Parameters

-Append

Voegt de uitvoer toe aan het einde van een bestaand bestand.

Type:SwitchParameter
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

Type:SwitchParameter
Aliassen:cf
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Encoding

Hiermee geeft u het type codering voor het doelbestand. De standaardwaarde is utf8NoBOM.

De acceptabele waarden voor deze parameter zijn als volgt:

  • ascii: gebruikt de codering voor de ASCII-tekenset (7-bits).
  • ansi: Gebruikt de codering voor de ANSI-codepagina van de huidige cultuur. Deze optie is toegevoegd in PowerShell 7.4.
  • bigendianunicode: Codeert in UTF-16-indeling met behulp van de bytevolgorde big-endian.
  • bigendianutf32: Codeert in UTF-32-indeling met behulp van de bytevolgorde big-endian.
  • oem: maakt gebruik van de standaardcodering voor MS-DOS en consoleprogramma's.
  • unicode: Codeert in UTF-16-indeling met behulp van de bytevolgorde little-endian.
  • utf7: Codeert in UTF-7-indeling.
  • utf8: Codeert in UTF-8-indeling.
  • utf8BOM: Codeert in UTF-8-indeling met Byte Order Mark (BOM)
  • utf8NoBOM: Codeert in UTF-8-indeling zonder Byte Order Mark (BOM)
  • utf32: Codeert in UTF-32-indeling.

Vanaf PowerShell 6.2 staat de coderingsparameter ook numerieke id's toe van geregistreerde codepagina's (zoals -Encoding 1251) of tekenreeksnamen van geregistreerde codepagina's (zoals-Encoding "windows-1251"). Zie de .NET-documentatie voor Encoding.CodePage voor meer informatie.

Vanaf PowerShell 7.4 kunt u de Ansi waarde voor de coderingsparameter gebruiken om de numerieke id voor de ANSI-codepagina van de huidige cultuur door te geven zonder deze handmatig op te geven.

Notitie

UTF-7* wordt niet meer aanbevolen om te gebruiken. Vanaf PowerShell 7.1 wordt een waarschuwing geschreven als u opgeeft utf7 voor de coderingsparameter .

Type:Encoding
Geaccepteerde waarden:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-FilePath

Hiermee geeft u het pad naar het uitvoerbestand.

Type:String
Aliassen:Path
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Force

Overschrijft het kenmerk Alleen-lezen en overschrijft een bestaand alleen-lezenbestand. De parameter Force overschrijft geen beveiligingsbeperkingen.

Type:SwitchParameter
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-InputObject

Hiermee geeft u de objecten die naar het bestand moeten worden geschreven. Voer een variabele in die de objecten bevat of typ een opdracht of expressie waarmee de objecten worden opgehaald.

Type:PSObject
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

-LiteralPath

Hiermee geeft u het pad naar het uitvoerbestand. De parameter LiteralPath wordt precies gebruikt zoals deze is getypt. Jokertekens worden niet geaccepteerd. Als het pad escapetekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat er geen tekens als escapereeksen moeten worden geïnterpreteerd. Zie about_Quoting_Rules voor meer informatie.

Type:String
Aliassen:PSPath, LP
Position:Named
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

-NoClobber

NoClobber voorkomt dat een bestaand bestand wordt overschreven en geeft een bericht weer dat het bestand al bestaat. Als er een bestand in het opgegeven pad bestaat, Out-File overschrijft u het bestand standaard zonder waarschuwing.

Type:SwitchParameter
Aliassen:NoOverwrite
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-NoNewline

Hiermee geeft u op dat de inhoud die naar het bestand wordt geschreven, niet eindigt met een nieuw regelteken. De tekenreeksweergaven van de invoerobjecten worden samengevoegd om de uitvoer te vormen. Er worden geen spaties of nieuwe regels ingevoegd tussen de uitvoertekenreeksen. Er wordt geen nieuwe regel toegevoegd na de laatste uitvoertekenreeks.

Type:SwitchParameter
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

Type:SwitchParameter
Aliassen:wi
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Width

Hiermee geeft u het maximum aantal tekens in elke regel uitvoer. Eventuele extra tekens worden afgekapt, niet verpakt. Als deze parameter niet wordt gebruikt, wordt de breedte bepaald door de kenmerken van de host. De standaardwaarde voor de PowerShell-console is 80 tekens. Als u de breedte wilt bepalen voor alle aanroepen van Out-File en de omleidingsoperators (> en >>), stelt u deze in voordat u deze gebruikt $PSDefaultParameterValues['out-file:width'] = 2000 Out-File.

Type:Int32
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

PSObject

U kunt elk object doorsluisen naar deze cmdlet.

Uitvoerwaarden

None

Deze cmdlet retourneert geen uitvoer.

Notities

Invoerobjecten worden automatisch opgemaakt zoals ze in de terminal zouden staan, maar u kunt een Format-* cmdlet gebruiken om expliciet de opmaak van de uitvoer naar het bestand te beheren. Bijvoorbeeld Get-Date | Format-List | Out-File out.txt

Gebruik de pijplijn om de uitvoer van een PowerShell-opdracht naar de Out-File cmdlet te verzenden. U kunt ook gegevens opslaan in een variabele en de parameter InputObject gebruiken om gegevens door te geven aan de Out-File cmdlet.

Out-File slaat gegevens op in een bestand, maar er worden geen uitvoerobjecten naar de pijplijn geproduceerd.

PowerShell 7.2 heeft de mogelijkheid toegevoegd om te bepalen hoe ANSI-escapereeksen worden weergegeven. Ansi-ingerichte uitvoer die wordt doorgegeven Out-File , kan worden gewijzigd op basis van de instelling van de $PSStyle.OutputRendering eigenschap. Zie about_ANSI_Terminals voor meer informatie.