Out-File

Wysyła dane wyjściowe do pliku.

Składnia

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

Opis

Polecenie Out-File cmdlet wysyła dane wyjściowe do pliku. Niejawnie używa systemu formatowania programu PowerShell do zapisu w pliku. Plik otrzymuje tę samą reprezentację wyświetlaną co terminal. Oznacza to, że dane wyjściowe mogą nie być idealne do przetwarzania programowego, chyba że wszystkie obiekty wejściowe są ciągami. Jeśli musisz określić parametry dla danych wyjściowych, użyj Out-File operatora przekierowania (>). Aby uzyskać więcej informacji na temat przekierowania, zobacz about_Redirection.

Przykłady

Przykład 1. Wysyłanie danych wyjściowych i tworzenie pliku

W tym przykładzie pokazano, jak wysłać listę procesów komputera lokalnego do pliku. Jeśli plik nie istnieje, Out-File tworzy plik w określonej ścieżce.

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

Polecenie Get-Process cmdlet pobiera listę procesów uruchomionych na komputerze lokalnym. Obiekty procesu są wysyłane w dół potoku Out-File do polecenia cmdlet. Out-File używa parametru FilePath i tworzy plik w bieżącym katalogu o nazwie Process.txt. Polecenie Get-Content pobiera zawartość z pliku i wyświetla je w konsoli programu PowerShell.

Przykład 2. Zapobieganie zastępowaniu istniejącego pliku

W tym przykładzie nie można zastąpić istniejącego pliku. Domyślnie Out-File zastępuje istniejące pliki.

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

Polecenie Get-Process cmdlet pobiera listę procesów uruchomionych na komputerze lokalnym. Obiekty procesu są wysyłane w dół potoku Out-File do polecenia cmdlet. Out-File używa parametru FilePath i próbuje zapisać w pliku w bieżącym katalogu o nazwie Process.txt. Parametr NoClobber uniemożliwia zastąpienie pliku i wyświetla komunikat, że plik już istnieje.

Przykład 3. Wysyłanie danych wyjściowych do pliku w formacie ASCII

W tym przykładzie pokazano, jak kodować dane wyjściowe przy użyciu określonego typu kodowania.

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

Polecenie Get-Process cmdlet pobiera listę procesów uruchomionych na komputerze lokalnym. Obiekty Procesu są przechowywane w zmiennej $Procs. Out-File używa parametru FilePath i tworzy plik w bieżącym katalogu o nazwie Process.txt. Parametr InputObject przekazuje obiekty procesu do $Procs pliku Process.txt. Parametr Kodowanie konwertuje dane wyjściowe na format ASCII . Parametr Width ogranicza każdy wiersz w pliku do 50 znaków, aby niektóre dane mogły zostać obcięte.

Przykład 4. Używanie dostawcy i wysyłanie danych wyjściowych do pliku

W tym przykładzie pokazano, jak używać Out-File polecenia cmdlet, gdy nie jesteś na dysku dostawcy systemu plików . Get-PSProvider Użyj polecenia cmdlet , aby wyświetlić dostawców na komputerze lokalnym. Aby uzyskać więcej informacji, zobacz 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

Polecenie Set-Location używa parametru Path , aby ustawić bieżącą lokalizację dostawcy Alias:rejestru . Polecenie Get-Location cmdlet wyświetla pełną ścieżkę dla Alias:elementu . Get-ChildItem wysyła obiekty w dół potoku Out-File do polecenia cmdlet. Out-File używa parametru FilePath , aby określić pełną ścieżkę i nazwę pliku dla danych wyjściowych, C:\TestDir\AliasNames.txt. Polecenie Get-Content cmdlet używa parametru Path i wyświetla zawartość pliku w konsoli programu PowerShell.

Przykład 5. Ustawianie szerokości danych wyjściowych pliku dla całego zakresu

W tym przykładzie użyto $PSDefaultParameterValues do ustawienia parametru Width dla wszystkich wywołań i operartorów Out-File przekierowania (> i >>) na 2000. Dzięki temu program PowerShell używa szerokości linii 2000 zamiast szerokości linii określonej przez szerokość konsoli hosta programu PowerShell wszędzie w bieżącym zakresie, w którym są wyświetlane dane sformatowane w tabeli danych wyjściowych.

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

Aby uzyskać więcej informacji na temat $PSDefaultParameterValuesprogramu , zobacz about_Preference_Variables.

Parametry

-Append

Dodaje dane wyjściowe na końcu istniejącego pliku.

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

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Określa typ kodowania dla pliku docelowego. Wartość domyślna to utf8NoBOM.

Dopuszczalne wartości tego parametru są następujące:

  • ascii: używa kodowania dla zestawu znaków ASCII (7-bitowych).
  • bigendianunicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów big-endian.
  • bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian.
  • oem: używa domyślnego kodowania dla programów MS-DOS i konsolowych.
  • unicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów little-endian.
  • utf7: Koduje w formacie UTF-7.
  • utf8: Koduje w formacie UTF-8.
  • utf8BOM: Koduje w formacie UTF-8 za pomocą znacznika kolejności bajtów (BOM)
  • utf8NoBOM: Koduje w formacie UTF-8 bez znaku zamówienia bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, parametr kodowania umożliwia również identyfikatory liczbowe zarejestrowanych stron kodu (takich jak ) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding 1251-Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą pliku Encoding.CodePage.

Uwaga

UtF-7* nie jest już zalecane do użycia. Od programu PowerShell 7.1 jest napisane ostrzeżenie, jeśli zostanie określone utf7 dla parametru Kodowanie .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Określa ścieżkę do pliku wyjściowego.

Type:String
Aliases:Path
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Force

Zastępuje atrybut tylko do odczytu i zastępuje istniejący plik tylko do odczytu. Parametr Force nie zastępuje ograniczeń zabezpieczeń.

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

-InputObject

Określa obiekty, które mają być zapisywane w pliku. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty.

Type:PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Określa ścieżkę do pliku wyjściowego. Parametr LiteralPath jest używany dokładnie tak, jak jest typowany. Symbole wieloznaczne nie są akceptowane. Jeśli ścieżka zawiera znaki ucieczki, należy je ująć w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki. Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-NoClobber

Polecenie NoClobber uniemożliwia zastąpienie istniejącego pliku i wyświetla komunikat, że plik już istnieje. Domyślnie, jeśli plik istnieje w określonej ścieżce, Out-File zastępuje plik bez ostrzeżenia.

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

-NoNewline

Określa, że zawartość zapisana w pliku nie kończy się znakiem nowego wiersza. Reprezentacje ciągów obiektów wejściowych są łączone w celu utworzenia danych wyjściowych. Żadne spacje ani nowe linie nie są wstawiane między ciągami wyjściowymi. Nie dodano nowego wiersza po ostatnim ciągu danych wyjściowych.

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

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Width

Określa liczbę znaków w każdym wierszu danych wyjściowych. Wszelkie dodatkowe znaki są obcinane, nie owinięte. Jeśli ten parametr nie jest używany, szerokość jest określana przez cechy hosta. Wartość domyślna dla konsoli programu PowerShell to 80 znaków. Jeśli chcesz kontrolować szerokość wszystkich wywołań, a także operatorów Out-File przekierowania (> i >>), ustaw $PSDefaultParameterValues['out-file:width'] = 2000 przed użyciem polecenia Out-File.

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

Dane wejściowe

PSObject

Możesz przekazać dowolny obiekt do Out-Fileobiektu .

Dane wyjściowe

None

Out-File nie generuje żadnych danych wyjściowych.

Uwagi

Obiekty wejściowe są automatycznie formatowane tak, jak w terminalu, ale można użyć Format-* polecenia cmdlet, aby jawnie kontrolować formatowanie danych wyjściowych do pliku. Na przykład Get-Date | Format-List | Out-File out.txt

Aby wysłać dane wyjściowe polecenia programu PowerShell do Out-File polecenia cmdlet, użyj potoku. Alternatywnie można przechowywać dane w zmiennej i użyć parametru InputObject , aby przekazać dane do Out-File polecenia cmdlet.

Out-File zapisuje dane w pliku, ale nie generuje żadnych obiektów wyjściowych w potoku.

Program PowerShell 7.2 dodał możliwość kontrolowania sposobu renderowania sekwencji ucieczki ANSI. Dane wyjściowe ozdobione Out-File przez anSI, które są przekazywane, można zmienić na podstawie ustawienia $PSStyle.OutputRendering właściwości. Aby uzyskać więcej informacji, zobacz about_ANSI_Terminals.