Get-Content

Pobiera zawartość elementu w określonej lokalizacji.

Składnia

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

Opis

Polecenie Get-Content cmdlet pobiera zawartość elementu w lokalizacji określonej przez ścieżkę, taką jak tekst w pliku lub zawartość funkcji. W przypadku plików zawartość jest odczytywana pojedynczo i zwraca kolekcję obiektów, z których każda reprezentuje wiersz zawartości.

Począwszy od programu PowerShell 3.0, Get-Content można również uzyskać określoną liczbę wierszy od początku lub końca elementu.

Przykłady

Przykład 1. Pobieranie zawartości pliku tekstowego

Ten przykład pobiera zawartość pliku w bieżącym katalogu. Plik LineNumbers.txt zawiera 100 wierszy w formacie, Jest to wiersz X i jest używany w kilku przykładach.

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.

Wartości tablicy 1–100 są wysyłane w dół potoku ForEach-Object do polecenia cmdlet. ForEach-Object używa bloku skryptu z poleceniem Add-Content cmdlet do utworzenia LineNumbers.txt pliku. Zmienna $_ reprezentuje wartości tablicy, ponieważ każdy obiekt jest wysyłany w dół potoku. Polecenie Get-Content cmdlet używa parametru Path , aby określić LineNumbers.txt plik i wyświetlić zawartość w konsoli programu PowerShell.

Przykład 2. Ograniczanie liczby wierszy zwracanych przez polecenie Get-Content

To polecenie pobiera pierwsze pięć wierszy pliku. Parametr TotalCount pobiera pierwsze pięć wierszy zawartości. W tym przykładzie użyto odwołania w przykładzie LineNumbers.txt 1.

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

Przykład 3. Pobieranie określonego wiersza zawartości z pliku tekstowego

To polecenie pobiera określoną liczbę wierszy z pliku, a następnie wyświetla tylko ostatni wiersz tej zawartości. Parametr TotalCount pobiera pierwsze 25 wierszy zawartości. W tym przykładzie LineNumbers.txt użyto pliku, do których odwołuje się przykład 1.

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

This is Line 25

Polecenie Get-Content jest opakowane w nawiasy, aby polecenie zostało ukończone przed przejściem do następnego kroku. Get-ContentZwraca tablicę wierszy, dzięki czemu można dodać notację indeksu po nawiasie w celu pobrania określonego numeru wiersza. W tym przypadku [-1] indeks określa ostatni indeks w zwracanej tablicy 25 pobranych wierszy.

Przykład 4. Pobieranie ostatniego wiersza pliku tekstowego

To polecenie pobiera ostatni wiersz zawartości z pliku. W tym przykładzie użyto pliku utworzonego LineNumbers.txt w przykładzie 1.

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

This is Line 100

W tym przykładzie użyto Get-Item polecenia cmdlet , aby zademonstrować, że można przekazać pliki potokowe do Get-Contentpliku . Parametr Tail pobiera ostatni wiersz pliku. Ta metoda jest szybsza niż pobieranie wszystkich wierszy w zmiennej i używanie notacji indeksu [-1] .

Przykład 5. Pobieranie zawartości alternatywnego strumienia danych

W tym przykładzie opisano sposób użycia parametru stream w celu pobrania zawartości alternatywnego strumienia danych dla plików przechowywanych na woluminie NTFS systemu Windows. W tym przykładzie Set-Content polecenie cmdlet służy do tworzenia przykładowej zawartości w pliku o nazwie Stream.txt.

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 stream.
# Note the single quotes to prevent variable substitution.
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

# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
$addContentSplat = @{
    Path = '.\Stream.txt'
    Stream = 'NewStream'
    Value = 'Added a stream named NewStream to Stream.txt'
}
Add-Content @addContentSplat

# 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

Parametr strumienia jest parametrem dynamicznym dostawcy systemu plików. Domyślnie Get-Content pobiera tylko dane z domyślnego lub :$DATA strumienia. Strumienie mogą służyć do przechowywania ukrytych danych, takich jak atrybuty, ustawienia zabezpieczeń lub inne dane.

Przykład 6. Pobieranie nieprzetworzonej zawartości

Polecenia w tym przykładzie pobierają zawartość pliku jako jeden ciąg zamiast tablicy ciągów. Domyślnie bez nieprzetworzonego parametru dynamicznego zawartość jest zwracana jako tablica ciągów rozdzielanych wierszami. W tym przykładzie LineNumbers.txt użyto pliku, do których odwołuje się przykład 1.

$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.

Przykład 7. Używanie filtrów z funkcją Get-Content

Możesz określić filtr polecenia Get-Content cmdlet. W przypadku używania filtrów w celu zakwalifikowania parametru Ścieżka należy dołączyć znak gwiazdki (*), aby wskazać zawartość ścieżki.

Następujące polecenie pobiera zawartość wszystkich *.log plików w C:\Temp katalogu.

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

Przykład 8. Pobieranie zawartości pliku jako tablicy bajtów

W tym przykładzie pokazano, jak pobrać zawartość pliku jako [byte[]] pojedynczy obiekt.

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

TypeName: System.Byte[]

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

Pierwsze polecenie używa parametru Kodowanie , aby pobrać strumień bajtów z pliku. Parametr Raw gwarantuje, że bajty są zwracane jako [System.Byte[]]. Jeśli parametr Raw był nieobecny, zwracana wartość jest strumieniem bajtów, który jest interpretowany przez program PowerShell jako [System.Object[]].

Parametry

-Credential

Uwaga

Ten parametr nie jest obsługiwany przez żadnych dostawców zainstalowanych w programie PowerShell. Aby personifikować innego użytkownika lub podnieść poziom poświadczeń podczas uruchamiania tego polecenia cmdlet, użyj polecenia Invoke-Command.

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

-Delimiter

Określa ogranicznik używany Get-Content do dzielenia pliku na obiekty podczas jego odczytu. Wartość domyślna to \n, znak końca wiersza. Podczas odczytywania pliku Get-Content tekstowego zwraca kolekcję obiektów ciągów, z których każda kończy się znakiem końca wiersza. Po wprowadzeniu ogranicznika, który nie istnieje w pliku, Get-Content zwraca cały plik jako pojedynczy, nieelimitowany obiekt.

Za pomocą tego parametru można podzielić duży plik na mniejsze pliki, określając separator plików jako ogranicznik. Ogranicznik jest zachowywany (nie jest odrzucany) i staje się ostatnim elementem w każdej sekcji pliku.

Ogranicznik jest parametrem dynamicznym, który dostawca systemu plików dodaje do Get-Content polecenia cmdlet . Ten parametr działa tylko na dyskach systemu plików.

Uwaga

Obecnie, gdy wartość parametru ogranicznika jest pustym ciągiem, Get-Content nie zwraca niczego. Jest to znany problem. Aby wymusić Get-Content zwrócenie całego pliku jako pojedynczego, niekwalifikowanego ciągu. Wprowadź wartość, która nie istnieje w pliku.

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

-Encoding

Określa typ kodowania dla pliku docelowego. Domyślna wartość to Default.

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

  • Ascii Używa zestawu znaków ASCII (7-bitowego).
  • BigEndianUnicode Używa formatu UTF-16 z kolejnością bajtów big-endian.
  • BigEndianUTF32 Używa formatu UTF-32 z kolejnością bajtów big-endian.
  • Byte Koduje zestaw znaków w sekwencji bajtów.
  • Default Używa kodowania odpowiadającego aktywnej stronie kodu systemu (zwykle ANSI).
  • Oem Używa kodowania odpowiadającego bieżącej stronie kodowej producenta OEM systemu.
  • String Tak samo jak Unicode.
  • Unicode Używa formatu UTF-16 z kolejnością bajtów little-endian.
  • Unknown Tak samo jak Unicode.
  • UTF7 Używa protokołu UTF-7.
  • UTF8 Używa protokołu UTF-8.
  • UTF32 Używa formatu UTF-32 z kolejnością bajtów little-endian.

Kodowanie jest parametrem dynamicznym, który dostawca systemu plików dodaje do Get-Content polecenia cmdlet . Ten parametr działa tylko na dyskach systemu plików.

Podczas odczytywania i zapisywania w plikach binarnych użyj wartości Byte dla parametru dynamicznego Kodowanie i wartości 0 dla parametru ReadCount . Wartość ReadCount 0 odczytuje cały plik w jednej operacji odczytu i konwertuje go na pojedynczy obiekt (PSObject). Domyślna wartość ReadCount , 1, odczytuje jeden bajt w każdej operacji odczytu i konwertuje każdy bajt na oddzielny obiekt, co powoduje błędy podczas zapisywania bajtów w pliku za pomocą Set-Content polecenia cmdlet .

Type:FileSystemCmdletProviderEncoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Określa jako tablicę ciągów element lub elementy, które to polecenie cmdlet wyklucza w operacji. Wartość tego parametru kwalifikuje parametr Path .

Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Dozwolone są symbole wieloznaczne.

Parametr Exclude jest skuteczny tylko wtedy, gdy polecenie zawiera zawartość elementu, na przykład C:\Windows\*, gdzie symbol wieloznaczny określa zawartość C:\Windows katalogu.

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

-Filter

Określa filtr, aby zakwalifikować parametr Ścieżka . Dostawca systemu plików jest jedynym zainstalowanym dostawcą programu PowerShell, który obsługuje korzystanie z filtrów. Składnię języka filtru Systemu plików można znaleźć w about_Wildcards. Filtry są bardziej wydajne niż inne parametry, ponieważ dostawca stosuje je, gdy polecenie cmdlet pobiera obiekty, zamiast filtrować obiekty programu PowerShell po ich pobraniu.

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

-Force

Wymuś zastąpienie atrybutu tylko do odczytu lub tworzenie katalogów w celu ukończenia ścieżki pliku. Parametr Force nie próbuje zmienić uprawnień pliku ani zastąpić ograniczeń zabezpieczeń.

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

-Include

Określa jako tablicę ciągów element lub elementy, które to polecenie cmdlet zawiera w operacji. Wartość tego parametru kwalifikuje parametr Path . Wprowadź element ścieżki lub wzorzec, taki jak "*.txt". Dozwolone są symbole wieloznaczne. Parametr Include jest skuteczny tylko wtedy, gdy polecenie zawiera zawartość elementu, na przykład C:\Windows\*, gdzie symbol wieloznaczny określa zawartość C:\Windows katalogu.

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

-LiteralPath

Określa ścieżkę do co najmniej jednej lokalizacji. Wartość LiterałuPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze znaki 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
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Określa ścieżkę do elementu, w którym Get-Content pobiera zawartość. Dozwolone są symbole wieloznaczne. Ścieżki muszą być ścieżkami do elementów, a nie do kontenerów. Na przykład należy określić ścieżkę do jednego lub kilku plików, a nie ścieżkę do katalogu.

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

-Raw

Ignoruje znaki nowego wiersza i zwraca całą zawartość pliku w jednym ciągu z zachowanymi nowymi liniami. Domyślnie znaki nowego wiersza w pliku są używane jako ograniczniki, aby oddzielić dane wejściowe do tablicy ciągów. Ten parametr został wprowadzony w programie PowerShell 3.0.

Raw to parametr dynamiczny, który dostawca systemu plików dodaje do Get-Content polecenia cmdlet Ten parametr działa tylko na dyskach systemu plików.

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

-ReadCount

Określa, ile wierszy zawartości jest wysyłanych przez potok w danym momencie. Domyślna wartość wynosi 1. Wartość 0 (zero) lub liczby ujemne wysyła jednocześnie całą zawartość.

Ten parametr nie zmienia wyświetlanej zawartości, ale ma wpływ na czas potrzebny na wyświetlenie zawartości. Wraz ze wzrostem wartości readCount czas zwracania pierwszego wiersza wzrasta, ale łączny czas operacji spada. Może to mieć zauważalną różnicę w dużych elementach.

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

-Stream

Pobiera zawartość określonego alternatywnego strumienia plików NTFS z pliku. Wprowadź nazwę strumienia. Symbole wieloznaczne nie są obsługiwane.

Stream to dynamiczny parametr, który dostawca systemu plików dodaje do Get-Content polecenia cmdlet . Ten parametr działa tylko na dyskach systemu plików w systemach Windows.

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

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

-Tail

Określa liczbę wierszy z końca pliku lub innego elementu. Możesz użyć nazwy parametru Tail lub jego aliasu Last. Wartości ujemne powodują, że polecenie cmdlet zwróci całą zawartość.

Ten parametr został wprowadzony w programie PowerShell 3.0.

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

-TotalCount

Określa liczbę wierszy od początku pliku lub innego elementu. Wartości ujemne powodują, że polecenie cmdlet zwróci całą zawartość.

Możesz użyć nazwy parametru TotalCount lub jego aliasów, First lub Head.

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

-UseTransaction

Zawiera polecenie w aktywnej transakcji. Ten parametr jest prawidłowy tylko wtedy, gdy transakcja jest w toku. Aby uzyskać więcej informacji, zobacz about_Transactions.

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

-Wait

Powoduje, że polecenie cmdlet czeka na czas nieokreślony, utrzymywanie otwartego pliku aż do przerwania. Podczas oczekiwania Get-Content sprawdza plik raz na sekundę i zwraca nowe wiersze, jeśli są obecne. W przypadku użycia z parametrem Get-Content TotalCount czeka, aż określona liczba wierszy będzie dostępna w określonym pliku. Jeśli na przykład określisz wartość TotalCount 10, a plik ma już 10 lub więcej wierszy, Get-Content zwraca 10 wierszy i kończy działanie. Jeśli plik ma mniej niż 10 wierszy, Get-Content zwraca każdy wiersz po nadejściu, ale czeka na nadejście dziesiątego wiersza przed wyjściem.

Możesz przerwać oczekiwanie, naciskając klawisze Ctrl+C. Usunięcie pliku powoduje błąd, który również przerywa oczekiwanie.

Wait to dynamiczny parametr, który dostawca systemu plików dodaje do Get-Content polecenia cmdlet . Ten parametr działa tylko na dyskach systemu plików. Nie można połączyć oczekiwania z nieprzetworzonymi.

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

Dane wejściowe

Int64

Liczbę odczytów lub łączną liczbę można przekazać do tego polecenia cmdlet.

String[]

Możesz przekazać ścieżki potokowe do tego polecenia cmdlet.

PSCredential

Możesz przekazać poświadczenia potokowe do tego polecenia cmdlet.

Dane wyjściowe

Byte

Jeśli używasz parametru AsByteStream , to polecenie cmdlet zwraca zawartość jako bajty.

String

Domyślnie to polecenie cmdlet zwraca zawartość jako tablicę ciągów— jedną na wiersz. Gdy używasz parametru Raw , zwraca on pojedynczy ciąg zawierający każdy wiersz w pliku.

Uwagi

Program Windows PowerShell zawiera następujące aliasy dla programu Get-Content:

  • cat
  • gc
  • type

Polecenie Get-Content cmdlet jest przeznaczone do pracy z danymi udostępnianymi przez dowolnego dostawcę. Aby uzyskać dostawców w sesji, użyj Get-PSProvider polecenia cmdlet . Aby uzyskać więcej informacji, zobacz about_Providers.