Get-Content

Ruft den Inhalt des Elements am angegebenen Speicherort ab.

Syntax

Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   [-Path] <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]
Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   -LiteralPath <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]

Beschreibung

Das Get-Content Cmdlet ruft den Inhalt des Elements an der durch den Pfad angegebenen Position ab, z. B. den Text in einer Datei oder den Inhalt einer Funktion. Bei Dateien wird der Inhalt Zeilen für Zeile gelesen und gibt eine Auflistung von -Objekten zurück, die jeweils eine Inhaltszeile darstellen.

Ab PowerShell 3.0 Get-Content kann auch eine angegebene Anzahl von Zeilen vom Anfang oder Ende eines Elements abgerufen werden.

Beispiele

Beispiel 1: Abrufen des Inhalts einer Textdatei

In diesem Beispiel wird der Inhalt einer Datei im aktuellen Verzeichnis abgerufen. Die LineNumbers.txt Datei enthält 100 Zeilen im Format Dies ist Zeile X und wird in mehreren Beispielen verwendet.

1..100 | ForEach-Object { Add-Content -Path .\LineNumbers.txt -Value "This is line $_." }
Get-Content -Path .\LineNumbers.txt

This is Line 1
This is Line 2
...
This is line 99.
This is line 100.

Die Arraywerte 1 bis 100 werden in der Pipeline an das ForEach-Object Cmdlet gesendet. ForEach-Object verwendet einen Skriptblock mit dem Add-Content Cmdlet, um die LineNumbers.txt Datei zu erstellen. Die Variable $_ stellt die Arraywerte dar, während jedes Objekt in der Pipeline gesendet wird. Das Get-Content Cmdlet verwendet den Path-Parameter , um die LineNumbers.txt Datei anzugeben und zeigt den Inhalt in der PowerShell-Konsole an.

Beispiel 2: Einschränken der Anzahl von Zeilen, die Get-Content zurückgegeben werden

Dieser Befehl ruft die ersten fünf Zeilen einer Datei ab. Der TotalCount-Parameter wird verwendet, um die ersten fünf Inhaltszeilen abzurufen. In diesem Beispiel wird die LineNumbers.txt Datei verwendet, die in Beispiel 1 erstellt wurde.

Get-Content -Path .\LineNumbers.txt -TotalCount 5

This is Line 1
This is Line 2
This is Line 3
This is Line 4
This is Line 5

Beispiel 3: Abrufen einer bestimmten Inhaltszeile aus einer Textdatei

Dieser Befehl ruft eine bestimmte Anzahl von Zeilen aus einer Datei ab und zeigt dann nur die letzte Zeile dieses Inhalts an. Der TotalCount-Parameter ruft die ersten 25 Inhaltszeilen ab. In diesem Beispiel wird die LineNumbers.txt Datei verwendet, die in Beispiel 1 erstellt wurde.

(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1]

This is Line 25

Der Get-Content Befehl wird in Klammern umschlossen, sodass der Befehl abgeschlossen wird, bevor mit dem nächsten Schritt fortzufahren. Get-Contentgibt ein Zeilenarray zurück. Dadurch können Sie die Indexnotation nach der Klammer hinzufügen, um eine bestimmte Zeilennummer abzurufen. In diesem Fall gibt der [-1] Index den letzten Index im zurückgegebenen Array von 25 abgerufenen Zeilen an.

Beispiel 4: Abrufen der letzten Zeile einer Textdatei

Dieser Befehl ruft die letzte Inhaltszeile aus einer Datei ab. In diesem Beispiel wird die LineNumbers.txt Datei verwendet, die in Beispiel 1 erstellt wurde.

Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1

This is Line 100

In diesem Beispiel wird das Get-Item Cmdlet verwendet, um zu veranschaulichen, dass Sie Dateien an den Get-Content Parameter übergeben können. Der Tail-Parameter ruft die letzte Zeile der Datei ab. Diese Methode ist schneller als das Abrufen aller Zeilen und die Verwendung der [-1] Indexnotation.

Beispiel 5: Abrufen des Inhalts eines alternativen Datenstroms

In diesem Beispiel wird beschrieben, wie sie den Stream-Parameter verwenden, um den Inhalt eines alternativen Datenstroms für Dateien abzurufen, die auf einem Windows NTFS-Volume gespeichert sind. In diesem Beispiel wird das Set-Content Cmdlet verwendet, um Beispielinhalt in einer Datei namens Stream.txtzu erstellen.

Set-Content -Path .\Stream.txt -Value 'This is the content of the Stream.txt file'
# Specify a wildcard to the Stream parameter to display all streams of the recently created file.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

# Retrieve the content of the primary, or $DATA stream.    # Retrieve the content of the primary stream. Note the singlequotes to prevent variable substitution.
Get-Content -Path .\Stream.txt -Stream $DATA    Get-Content -Path .\Stream.txt -Stream ':$DATA'

This is the content of the Stream.txt file

# Alternative way to get the same content.
Get-Content -Path .\Stream.txt -Stream ""
# The primary stream doesn't need to be specified to get the primary stream of the file.
# This gets the same data as the prior two examples.
Get-Content -Path .\Stream.txt

This is the content of the Stream.txt file

# The primary stream doesn't need to be specified to get the primary stream of the file.
# This gets the same data as the prior two examples.
Get-Content -Path .\Stream.txt

# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
Add-Content -Path .\Stream.txt -Stream NewStream -Value 'Added a stream named NewStream to Stream.txt'
# Use Get-Item to verify the stream was created.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt:NewStream
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt:NewStream
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : NewStream
Length        : 46

# Retrieve the content of your newly created Stream.
Get-Content -Path .\Stream.txt -Stream NewStream

Added a stream named NewStream to Stream.txt

Der Stream-Parameter ist ein dynamischer Parameter des FileSystem-Anbieters. Standardmäßig Get-Content werden nur Daten aus dem Standarddatenstrom oder :$DATA -stream abgerufen. Datenströme können verwendet werden, um ausgeblendete Daten wie Attribute, Sicherheitseinstellungen oder andere Daten zu speichern. Sie können auch in Verzeichnissen gespeichert werden, ohne untergeordnete Elemente zu sein.

Beispiel 6: Abrufen von Rohinhalten

Die Befehle in diesem Beispiel rufen den Inhalt einer Datei als eine Zeichenfolge anstelle eines Arrays von Zeichenfolgen ab. Standardmäßig wird der Inhalt ohne den dynamischen Raw-Parameter als Array von durch Newline getrennten Zeichenfolgen zurückgegeben. In diesem Beispiel wird die LineNumbers.txt Datei verwendet, die in Beispiel 1 erstellt wurde.

$raw = Get-Content -Path .\LineNumbers.txt -Raw
$lines = Get-Content -Path .\LineNumbers.txt
Write-Host "Raw contains $($raw.Count) lines."
Write-Host "Lines contains $($lines.Count) lines."

Raw contains 1 lines.
Lines contains 100 lines.

Beispiel 7: Verwenden von Filtern mit Get-Content

Sie können einen Filter für das Get-Content Cmdlet angeben. Wenn Sie Filter verwenden, um den Path-Parameter zu qualifizieren, müssen Sie ein nachfolgendes Sternchen (*) einfügen, um den Inhalt des Pfads anzugeben.

Der folgende Befehl ruft den Inhalt aller *.log Dateien im C:\Temp Verzeichnis ab.

Get-Content -Path C:\Temp\* -Filter *.log

Beispiel 8: Abrufen von Dateiinhalten als Bytearray

In diesem Beispiel wird veranschaulicht, wie Der Inhalt einer Datei als einzelnes [byte[]] Objekt abgerufen wird.

$byteArray = Get-Content -Path C:\temp\test.txt -AsByteStream -Raw
Get-Member -InputObject $bytearray

TypeName: System.Byte[]

Name           MemberType            Definition
----           ----------            ----------
Count          AliasProperty         Count = Length
Add            Method                int IList.Add(System.Object value)

Der erste Befehl verwendet den AsByteStream-Parameter , um den Bytedatenstrom aus der Datei abzurufen. Der Raw-Parameter stellt sicher, dass die Bytes als [System.Byte[]]zurückgegeben werden. Wenn der Raw-Parameter nicht vorhanden war, ist der Rückgabewert ein Bytestrom, der von PowerShell als [System.Object[]]interpretiert wird.

Parameter

-AsByteStream

Gibt an, dass der Inhalt als Bytestrom gelesen werden soll. Der AsByteStream-Parameter wurde in Windows PowerShell 6.0 eingeführt.

Eine Warnung tritt auf, wenn Sie den AsByteStream-Parameter mit dem Encoding-Parameter verwenden. Der AsByteStream-Parameter ignoriert jede Codierung, und die Ausgabe wird als Bytestrom zurückgegeben.

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

-Credential

Hinweis

Dieser Parameter wird von anbietern, die mit PowerShell installiert sind, nicht unterstützt. Verwenden Sie Invoke-Command, um die Identität eines anderen Benutzers zu annehmen oder Ihre Anmeldeinformationen beim Ausführen dieses Cmdlets zu erhöhen.

Type:PSCredential
Position:Named
Default value:Current user
Accept pipeline input:True
Accept wildcard characters:False

-Delimiter

Gibt das Trennzeichen an, das verwendet, Get-Content um die Datei während des Lesens in Objekte aufzuteilen. Der Standardwert ist \n, das Zeilenendezeichen. Gibt beim Lesen einer Textdatei Get-Content eine Auflistung von Zeichenfolgenobjekten zurück, die jeweils mit einem Zeilenendezeichen endet. Wenn Sie ein Trennzeichen eingeben, das in der Datei nicht vorhanden ist, Get-Content gibt die gesamte Datei als einzelnes, nicht durch Trennzeichen getrenntes Objekt zurück.

Sie können diesen Parameter verwenden, um eine große Datei in kleinere Dateien aufzuteilen, indem Sie ein Dateitrennzeichen als Trennzeichen angeben. Das Trennzeichen wird beibehalten (nicht verworfen) und wird das letzte Element in jedem Dateiabschnitt.

Trennzeichen ist ein dynamischer Parameter, den der FileSystem-Anbieter dem Get-Content Cmdlet hinzufügt. Dieser Parameter funktioniert nur in Dateisystemlaufwerken.

Hinweis

Wenn der Wert des Delimiter-Parameters eine leere Zeichenfolge ist, Get-Content gibt derzeit nichts zurück. Dieses Problem ist bekannt. Um zu erzwingen Get-Content , dass die gesamte Datei als einzelne, nicht begrenzte Zeichenfolge zurückgegeben wird. Geben Sie einen Wert ein, der in der Datei nicht vorhanden ist.

Type:String
Position:Named
Default value:End-of-line character
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Gibt den Typ der Codierung für die Zieldatei an. Standardwert: utf8NoBOM.

Die zulässigen Werte für diesen Parameter sind wie folgt:

  • ascii: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).
  • bigendianunicode: Codiert im UTF-16-Format mit der Big-Endian-Bytereihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mit der Big-Endian-Bytereihenfolge.
  • oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • unicode: Codiert im UTF-16-Format unter Verwendung der Little-Endian-Bytereihenfolge.
  • utf7: Codiert im UTF-7-Format.
  • utf8: Codiert im UTF-8-Format.
  • utf8BOM: Codiert im UTF-8-Format mit Byte Order Mark (BOM)
  • utf8NoBOM: Codiert im UTF-8-Format ohne Byte Order Mark (BOM)
  • utf32: Codiert im UTF-32-Format.

Die Codierung ist ein dynamischer Parameter, den der FileSystem-Anbieter dem Get-Content Cmdlet hinzufügt. Dieser Parameter ist nur auf Dateisystemlaufwerken verfügbar.

Verwenden Sie beim Lesen aus Binärdateien den AsByteStream-Parameter und den Wert 0 für den ReadCount-Parameter . Ein ReadCount-Wert von 0 liest die gesamte Datei in einem einzelnen Lesevorgang. Der ReadCount-Standardwert 1 liest ein Byte in jedem Lesevorgang und konvertiert jedes Byte in ein separates Objekt. Dies führt zu Fehlern, wenn Sie das Set-Content Cmdlet verwenden, um die Bytes in eine Datei zu schreiben, es sei denn, Sie verwenden den AsByteStream-Parameter .

Ab PowerShell 6.2 lässt der Codierungsparameter auch numerische IDs von registrierten Codeseiten (z. B -Encoding 1251. ) oder Zeichenfolgennamen registrierter Codeseiten (z. B -Encoding "windows-1251". ) zu. Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.

Hinweis

UTF-7* wird nicht mehr empfohlen. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie für den Encoding-Parameter angebenutf7.

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

-Exclude

Gibt als Zeichenfolgenarray ein Element oder Elemente an, die von diesem Cmdlet im Vorgang ausgeschlossen werden. Der Wert dieses Parameters qualifiziert den Path-Parameter.

Geben Sie ein Pfadelement oder -muster ein, z. B *.txt. . Platzhalterzeichen sind zulässig.

Der Exclude-Parameter ist nur wirksam, wenn der Befehl den Inhalt eines Elements enthält, z C:\Windows\*. B. , wobei das Feldhalterzeichen den Inhalt des C:\Windows Verzeichnisses angibt.

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Gibt einen Filter an, um den Path-Parameter zu qualifizieren. Der FileSystem-Anbieter ist der einzige installierte PowerShell-Anbieter, der die Verwendung von Filtern unterstützt. Sie finden die Syntax für die FileSystem-Filtersprache in about_Wildcards. Filter sind effizienter als andere Parameter, da der Anbieter sie anwendet, wenn das Cmdlet die Objekte abruft, anstatt die Objekte nach dem Abrufen von PowerShell filtern zu lassen.

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

-Force

Force überschreibt ein schreibgeschütztes Attribut oder erstellt Verzeichnisse, um einen Dateipfad zu schließen. Der Force-Parameter versucht nicht, Dateiberechtigungen zu ändern oder Sicherheitseinschränkungen außer Kraft zu setzen.

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

-Include

Gibt als Zeichenfolgenarray ein Element oder Elemente an, die dieses Cmdlet in den Vorgang einschließt. Der Wert dieses Parameters qualifiziert den Path-Parameter. Geben Sie ein Pfadelement oder -muster ein, z. B "*.txt". . Platzhalterzeichen sind zulässig. Der Include-Parameter ist nur wirksam, wenn der Befehl den Inhalt eines Elements enthält, z C:\Windows\*. B. , wobei das Feldhalterzeichen den Inhalt des C:\Windows Verzeichnisses angibt.

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Gibt einen Pfad zu einem oder mehreren Speicherorten an. Der Wert von LiteralPath wird genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einzelne Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.

Weitere Informationen finden Sie unter about_Quoting_Rules.

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

-Path

Gibt den Pfad zu einem Element an, in dem Get-Content der Inhalt abgerufen wird. Platzhalterzeichen sind zulässig. Die Pfade müssen auf Elemente und nicht auf Container zeigen. Sie müssen beispielsweise einen Pfad zu Dateien angeben, ein Pfad zu einem Verzeichnis ist nicht zulässig.

Type:String[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:True

-Raw

Ignoriert Zeilenzeilenzeichen und gibt den gesamten Inhalt einer Datei in einer Zeichenfolge zurück, wobei die Zeilenzeilen beibehalten werden. Standardmäßig werden Zeilenumbruchzeichen in einer Datei als Trennzeichen verwendet, um die Eingabe in ein Array von Zeichenfolgen zu trennen. Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Raw ist ein dynamischer Parameter, den der FileSystem-Anbieter dem Get-Content Cmdlet Dieser Parameter funktioniert nur in Dateisystemlaufwerken hinzufügt.

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

-ReadCount

Gibt an, wie viele Zeilen mit Inhalt gleichzeitig über die Pipeline übergeben werden. Der Standardwert ist 1. Mit dem Wert %%amp;quot;0%%amp;quot; (null) wird der gesamte Inhalt auf einmal übergeben.

Dieser Parameter ändert den angezeigten Inhalt nicht, sondern wirkt sich auf die Zeit aus, die zum Anzeigen des Inhalts benötigt wird. Je größer der Wert von ReadCount wird, desto länger dauert es, bis die erste Zeile zurückgegeben wird. Die erforderliche Gesamtzeit für den Vorgang hingegen verringert sich. Dies kann einen spürbaren Unterschied bei großen Elementen machen.

Type:Int64
Position:Named
Default value:1
Accept pipeline input:True
Accept wildcard characters:False

-Stream

Hinweis

Dieser Parameter ist nur unter Windows verfügbar.

Ruft die Inhalte des angegebenen alternativen NTFS-Dateidatenstroms aus der Datei ab. Geben Sie den Namen des Stroms ein. Platzhalter werden nicht unterstützt.

Stream ist ein dynamischer Parameter, den der FileSystem-Anbieter dem Get-Content Cmdlet hinzufügt. Dieser Parameter funktioniert nur in Dateisystemlaufwerken auf Windows-Systemen.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt. In PowerShell 7.2 können Get-Content den Inhalt alternativer Datenströme aus Verzeichnissen und Dateien abrufen.

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

-Tail

Gibt die Anzahl der Zeilen am Ende einer Datei oder eines anderen Elements an. Sie können den Namen des Tail-Parameters oder den Alias Last verwenden. Dieser Parameter wurde in PowerShell 3.0 eingeführt.

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

-TotalCount

Gibt die Anzahl der Zeilen vom Anfang einer Datei oder eines anderen Elements an. Der Standardwert ist %%amp;quot;-1%%amp;quot; (alle Zeilen).

Sie können den TotalCount-Parameternamen oder seine Aliase First oder Head verwenden.

Type:Int64
Aliases:First, Head
Position:Named
Default value:-1
Accept pipeline input:True
Accept wildcard characters:False

-Wait

Die Datei bleibt geöffnet, nachdem alle vorhandenen Zeilen ausgegeben wurden. Überprüft während des Wartens Get-Content die Datei einmal pro Sekunde und gibt neue Zeilen aus, falls vorhanden. Sie können Warten unterbrechen, indem Sie STRG+C drücken. Das Warten endet auch, wenn die Datei gelöscht wird. In diesem Fall wird ein nicht beendender Fehler gemeldet.

Wait ist ein dynamischer Parameter, den der FileSystem-Anbieter dem Get-Content Cmdlet hinzufügt. Dieser Parameter funktioniert nur in Dateisystemlaufwerken. Wait kann nicht mit Raw kombiniert werden.

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

Eingaben

Int64

Sie können die Leseanzahl oder die Gesamtanzahl an dieses Cmdlet übergeben.

String[]

Sie können Pfade an dieses Cmdlet übergeben.

PSCredential

Sie können Anmeldeinformationen an dieses Cmdlet übergeben.

Ausgaben

Byte

Wenn Sie den AsByteStream-Parameter verwenden, gibt dieses Cmdlet den Inhalt als Bytes zurück.

String

Standardmäßig gibt dieses Cmdlet den Inhalt als Array von Zeichenfolgen zurück, eine pro Zeile. Wenn Sie den Raw-Parameter verwenden, wird eine einzelne Zeichenfolge zurückgegeben, die jede Zeile in der Datei enthält.

Hinweise

PowerShell enthält die folgenden Aliase für Get-Content:

  • Alle Plattformen:
    • gc
    • type
  • Windows:
    • cat

Das Get-Content Cmdlet ist für die Arbeit mit den Daten konzipiert, die von einem beliebigen Anbieter verfügbar gemacht werden. Verwenden Sie das Cmdlet, um die Get-PSProvider Anbieter in Ihrer Sitzung abzurufen. Weitere Informationen finden Sie unter about_Providers.