Delen via


Out-File

Hiermee wordt uitvoer naar een bestand verzonden.

Syntaxis

ByPath (Standaard)

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

Description

De cmdlet Out-File 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 pijpen 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_Redirectionvoor 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, maakt Out-File 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 cmdlet Get-Process haalt de lijst met processen op die op de lokale computer worden uitgevoerd. De Process-objecten worden naar de Out-File-cmdlet verzonden. Out-File gebruikt de parameter FilePath en maakt u een bestand in de huidige map met de naam Process.txt. Met de opdracht Get-Content 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. Standaard overschrijft Out-File bestaande bestanden.

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 cmdlet Get-Process haalt de lijst met processen op die op de lokale computer worden uitgevoerd. De Process-objecten worden naar de Out-File-cmdlet verzonden. Out-File gebruikt de parameter FilePath en probeert naar een bestand te schrijven 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 cmdlet Get-Process haalt de lijst met processen op die op de lokale computer worden uitgevoerd. De Process-objecten worden opgeslagen in de variabele, $Procs. Out-File gebruikt de parameter FilePath en maakt u een bestand in de huidige map met de naam Process.txt. De parameter InputObject geeft de procesobjecten in $Procs door aan het bestand Process.txt. De parameter Codering converteert de uitvoer naar 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 cmdlet Out-File gebruikt wanneer u zich niet in een bestandssysteem bevindt providerstation. Gebruik de cmdlet Get-PSProvider om de providers op uw lokale computer weer te geven. Zie about_Providersvoor 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 opdracht Set-Location gebruikt de parameter Path om de huidige locatie in te stellen op de registerprovider Alias:. Met de cmdlet Get-Location wordt het volledige pad voor Alias:weergegeven. Get-ChildItem objecten in de pijplijn naar de cmdlet Out-File verzendt. Out-File gebruikt de parameter FilePath om het volledige pad en de bestandsnaam voor de uitvoer op te geven, C:\TestDir\AliasNames.txt. De cmdlet Get-Content maakt gebruik van 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 $PSDefaultParameterValues gebruikt om de parameter Width in te stellen voor alle aanroepen van Out-File en de omleidingsoperators (> en >>) 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

Voor meer informatie over $PSDefaultParameterValues, zie about_Preference_Variables.

Parameters

-Append

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

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Confirm

Voordat u de cmdlet uitvoert, vraagt het systeem om bevestiging.

Parametereigenschappen

Type:SwitchParameter
Default value:False
Ondersteunt jokertekens:False
DontShow:False
Aliassen:Cf

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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: maakt gebruik van 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: Encodeert in UTF-16-indeling met de little-endian-bytevolgorde.
  • utf7: Codeert in UTF-7-formaat.
  • utf8: Codeert in de UTF-8-indeling.
  • utf8BOM: Codeert in UTF-8-formaat 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 parameter Coderings- 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.CodePagevoor 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.

Opmerking

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

Parametereigenschappen

Type:Encoding
Default value:UTF8NoBOM
Geaccepteerde waarden:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:1
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-FilePath

Geeft het pad naar het uitvoerbestand op.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:Path

Parametersets

ByPath
Position:0
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Force

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

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:PSObject
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-LiteralPath

Geeft het pad naar het uitvoerbestand op. De parameter LiteralPath wordt exact gebruikt zoals deze is getypt. Jokertekens worden niet geaccepteerd. Als het pad escape-tekens bevat, zet het dan tussen enkele aanhalingstekens. Enkele aanhalingstekens zorgen ervoor dat PowerShell geen tekens als escapesequenties interpreteert. Zie about_Quoting_Rulesvoor meer informatie.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:PSPath, LP

Parametersets

ByLiteralPath
Position:Named
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:True
Waarde van resterende argumenten:False

-NoClobber

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

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:NoOverwrite

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-WhatIf

Toont wat er zou gebeuren wanneer de cmdlet wordt uitgevoerd. De cmdlet wordt niet uitgevoerd.

Parametereigenschappen

Type:SwitchParameter
Default value:False
Ondersteunt jokertekens:False
DontShow:False
Aliassen:Wi

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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 van alle aanroepen van Out-File en de omleidingsoperators (> en >>) wilt bepalen, stelt u $PSDefaultParameterValues['Out-File:Width'] = 2000 in voordat u Out-Filegebruikt.

Parametereigenschappen

Type:Int32
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

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 gegevens opslaat 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 aan Out-File kan worden gewijzigd op basis van de instelling van de eigenschap $PSStyle.OutputRendering. Zie about_ANSI_Terminalsvoor meer informatie.