Out-File
Skickar utdata till en fil.
Syntax
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
Cmdleten Out-File
skickar utdata till en fil. Den använder implicit PowerShells formateringssystem för att skriva till filen. Filen får samma visningsrepresentation som terminalen. Det innebär att utdata kanske inte är idealiska för programmatisk bearbetning om inte alla indataobjekt är strängar.
När du behöver ange parametrar för utdata använder Out-File
du i stället för omdirigeringsoperatorn (>
). Mer information om omdirigering finns i about_Redirection.
Exempel
Exempel 1: Skicka utdata och skapa en fil
Det här exemplet visar hur du skickar en lista över den lokala datorns processer till en fil. Om filen inte finns Out-File
skapas filen i den angivna sökvägen.
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
Cmdleten Get-Process
hämtar listan över processer som körs på den lokala datorn. Processobjekten skickas nedåt i pipelinen till cmdletenOut-File
. Out-File
använder Parametern FilePath och skapar en fil i den aktuella katalogen med namnetProcess.txt. Kommandot Get-Content
hämtar innehåll från filen och visar det i PowerShell-konsolen.
Exempel 2: Förhindra att en befintlig fil skrivs över
Det här exemplet förhindrar att en befintlig fil skrivs över. Skriver över befintliga filer som standard Out-File
.
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
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cmdleten Get-Process
hämtar listan över processer som körs på den lokala datorn. Processobjekten skickas nedåt i pipelinen till cmdletenOut-File
. Out-File
använder Parametern FilePath och försöker skriva till en fil i den aktuella katalogen med namnetProcess.txt. Parametern NoClobber förhindrar att filen skrivs över och visar ett meddelande om att filen redan finns.
Exempel 3: Skicka utdata till en fil i ASCII-format
Det här exemplet visar hur du kodar utdata med en specifik kodningstyp.
$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50
Cmdleten Get-Process
hämtar listan över processer som körs på den lokala datorn. Processobjekten lagras i variabeln . $Procs
Out-File
använder Parametern FilePath och skapar en fil i den aktuella katalogen med namnetProcess.txt. Parametern InputObject skickar processobjekten till $Procs
filen Process.txt. Kodningsparametern konverterar utdata till ASCII-format. Parametern Width begränsar varje rad i filen till 50 tecken så att vissa data kan trunkeras.
Exempel 4: Använd en provider och skicka utdata till en fil
Det här exemplet visar hur du använder cmdleten Out-File
när du inte är på en FileSystem-providerenhet . Använd cmdleten Get-PSProvider
för att visa providrar på den lokala datorn. Mer information finns i 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
Kommandot Set-Location
använder parametern Path för att ange den aktuella platsen till registerprovidern Alias:
. Cmdleten Get-Location
visar den fullständiga sökvägen för Alias:
.
Get-ChildItem
skickar objekt ned pipelinen till cmdleten Out-File
. Out-File
använder FilePath-parametern för att ange den fullständiga sökvägen och filnamnet för utdata ,C:\TestDir\AliasNames.txt. Cmdleten Get-Content
använder parametern Path och visar filens innehåll i PowerShell-konsolen.
Exempel 5: Ange filutdatabredd för hela omfånget
I det här exemplet används $PSDefaultParameterValues
för att ange parametern Width
för alla anrop av Out-File
och omdirigeringsoperatorerna (>
och >>
) till 2000. Detta säkerställer att powershell använder en linjebredd på 2 000 i stället för en linjebredd som bestäms av PowerShell-värdens konsolbredd överallt inom det aktuella omfånget som du matar ut tabellformaterade data till filen.
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
Mer information om $PSDefaultParameterValues
finns i about_Preference_Variables.
Parametrar
-Append
Lägger till utdata i slutet av en befintlig fil.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Anger typ av kodning för målfilen. Standardvärdet är utf8NoBOM
.
Godkända värden för den här parametern är följande:
ascii
: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).bigendianunicode
: Kodar i UTF-16-format med hjälp av den stora byteordningen.bigendianutf32
: Kodar i UTF-32-format med hjälp av den stora byteordningen.oem
: Använder standardkodning för MS-DOS och konsolprogram.unicode
: Kodar i UTF-16-format med den little-endianska byteordningen.utf7
: Kodar i UTF-7-format.utf8
: Kodar i UTF-8-format.utf8BOM
: Kodar i UTF-8-format med BOM (Byte Order Mark)utf8NoBOM
: Kodar i UTF-8-format utan bom (Byte Order Mark)utf32
: Kodar i UTF-32-format.
Från och med PowerShell 6.2 tillåter kodningsparametern även numeriska ID:er för registrerade kodsidor (till exempel -Encoding 1251
) eller strängnamn för registrerade kodsidor (till exempel -Encoding "windows-1251"
). Mer information finns i .NET-dokumentationen för Encoding.CodePage.
Anteckning
UTF-7* rekommenderas inte längre att använda. Från och med PowerShell 7.1 skrivs en varning om du anger utf7
för kodningsparametern .
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
Anger sökvägen till utdatafilen.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Åsidosätter det skrivskyddade attributet och skriver över en befintlig skrivskyddad fil. Parametern Force åsidosätter inte säkerhetsbegränsningar.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Anger de objekt som ska skrivas till filen. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Anger sökvägen till utdatafilen. Parametern LiteralPath används exakt som den skrivs. Jokertecken accepteras inte. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken talar om för PowerShell att inga tecken ska tolkas som escape-sekvenser. Mer information finns i 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 förhindrar att en befintlig fil skrivs över och visar ett meddelande om att filen redan finns. Om det finns en fil i den angivna sökvägen Out-File
skriver du som standard över filen utan varning.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoNewline
Anger att innehållet som skrivs till filen inte slutar med ett nytt radtecken. Strängrepresentationerna av indataobjekten sammanfogas för att bilda utdata. Inga blanksteg eller nylinjer infogas mellan utdatasträngarna. Ingen ny rad läggs till efter den senaste utdatasträngen.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Width
Anger det maximala antalet tecken i varje rad med utdata. Eventuella ytterligare tecken trunkeras, inte omsluts. Om den här parametern inte används bestäms bredden av värdens egenskaper. Standardvärdet för PowerShell-konsolen är 80 tecken. Om du vill styra bredden för alla anrop av Out-File
samt omdirigeringsoperatorerna (>
och >>
), anger du $PSDefaultParameterValues['out-file:width'] = 2000
innan du använder Out-File
.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka valfritt objekt till den här cmdleten.
Utdata
None
Denna cmdlet returnerar inga utdata.
Kommentarer
Indataobjekt formateras automatiskt som de skulle vara i terminalen, men du kan använda en Format-*
cmdlet för att uttryckligen styra formateringen av utdata till filen. Till exempel Get-Date | Format-List | Out-File out.txt
Om du vill skicka utdata från ett PowerShell-kommando till cmdleten Out-File
använder du pipelinen. Du kan också lagra data i en variabel och använda parametern InputObject för att skicka data till cmdleten Out-File
.
Out-File
sparar data i en fil, men den genererar inga utdataobjekt till pipelinen.
PowerShell 7.2 har lagt till möjligheten att styra hur ANSI-escape-sekvenser renderas. ANSI-dekorerade utdata som skickas till Out-File
kan ändras baserat på inställningen för $PSStyle.OutputRendering
egenskapen . Mer information finns i about_ANSI_Terminals.