Udostępnij za pośrednictwem


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

Opis

Polecenie cmdlet Get-Content 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że 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 ma 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 do polecenia cmdlet ForEach-Object. ForEach-Object używa bloku skryptu z poleceniem cmdlet Add-Content do utworzenia pliku LineNumbers.txt. Zmienna $_ reprezentuje wartości tablicy w miarę jak każdy obiekt jest wysyłany w dół potoku. Polecenie cmdlet Get-Content używa parametru path, aby określić plik LineNumbers.txt i wyświetlić zawartość w konsoli programu PowerShell.

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

To polecenie pobiera pierwsze pięć wierszy pliku. Parametr TotalCount pobiera pięć pierwszych wierszy zawartości. Ten przykład wykorzystuje LineNumbers.txt, o którym mowa w przykładzie 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 użyto pliku LineNumbers.txt, do którego odnosi 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 indeks [-1] 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 LineNumbers.txt utworzonego w przykładzie 1.

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

This is Line 100

W tym przykładzie użyto polecenia cmdlet Get-Item, aby zademonstrować, że można przesyłać pliki do Get-Content. 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 polecenie cmdlet Set-Content 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 Stream 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. Można je również przechowywać w katalogach bez bycia elementami podrzędnymi.

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 oddzielonych nowymi wierszami. W tym przykładzie użyto pliku LineNumbers.txt, do którego odnosi 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 Get-Content

Możesz określić filtr dla polecenia cmdlet Get-Content. Podczas używania filtrów dla parametru ścieżki , należy dołączyć końcową gwiazdkę (*), aby wskazać zawartość ścieżki.

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

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[]] jako pojedynczy obiekt.

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

Pierwsze polecenie używa parametru AsByteStream, 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

-AsByteStream

Określa, że zawartość powinna być odczytywana jako strumień bajtów. Parametr AsByteStream został wprowadzony w programie Windows PowerShell 6.0.

Podczas używania parametru AsByteStream z parametrem Encoding występuje ostrzeżenie. Parametr AsByteStream ignoruje kodowanie, a dane wyjściowe są zwracane jako strumień bajtów.

Podczas odczytywania i zapisywania do plików binarnych użyj parametru AsByteStream i wartości 0 dla parametru ReadCount. ReadCount wartość 0 odczytuje cały plik w jednej operacji odczytu. Wartość domyślna ReadCount, 1, odczytuje jeden bajt w każdej operacji odczytu i konwertuje każdy bajt na oddzielny obiekt. Przekierowanie jednobajtowych danych wyjściowych do Set-Content powoduje błędy, chyba że użyjesz parametru AsByteStream z Set-Content.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Credential

Notatka

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

Typ:PSCredential
Position:Named
Domyślna wartość:Current user
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Delimiter

Określa ogranicznik, który Get-Content używa do dzielenia pliku na obiekty podczas jego odczytu. Wartość domyślna to \n, znak końca wiersza. Podczas odczytywania pliku tekstowego Get-Content 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 dynamicznym parametrem, który dostawca systemu plików dodaje do polecenia cmdlet Get-Content. Ten parametr działa tylko na dyskach systemu plików.

Notatka

Obecnie, gdy wartość parametru ogranicznika jest pustym ciągiem, Get-Content nic nie zwraca. Jest to znany problem. Aby wymusić, aby Get-Content zwrócił cały plik jako pojedynczy ciąg bez separatorów. Wprowadź wartość, która nie istnieje w pliku.

Typ:String
Position:Named
Domyślna wartość:End-of-line character
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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 zestawu znaków ASCII (7-bitowych).
  • ansi: używa kodowania dla strony kodowej ANSI bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4.
  • bigendianunicode: Koduje w formacie UTF-16, korzystając z 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 konsoli.
  • 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 kolejności bajtów (BOM)
  • utf32: koduje w formacie UTF-32.

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

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

Począwszy od programu PowerShell 7.4, można użyć wartości Ansi parametru kodowania, aby przekazać identyfikator liczbowy dla strony kodowej ANSI bieżącej kultury bez konieczności ręcznego określania go.

Notatka

Użycie UTF-7 * nie jest już zalecane. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane, jeśli określisz utf7 dla parametru kodowania.

Typ:Encoding
Dopuszczalne wartości:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Domyślna wartość:UTF8NoBOM
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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ść katalogu C:\Windows.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Filter

Określa filtr, aby doprecyzować parametr ścieżki. Dostawca systemu plików jest jedynym zainstalowanym dostawcą programu PowerShell obsługującym korzystanie z filtrów. Składnię języka filtra 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.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Force

Siła może obejść atrybut tylko do odczytu lub utworzyć katalogi, aby dopełnić ścieżkę pliku. Parametr Force nie próbuje zmienić uprawnień pliku ani zastąpić ograniczeń zabezpieczeń.

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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ść katalogu C:\Windows.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-LiteralPath

Określa ścieżkę do co najmniej jednej lokalizacji. Wartość LiteralPath jest używana dokładnie tak, jak jest typowana. Żadne 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.

Typ:String[]
Aliasy:PSPath, LP
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych: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.

Typ:String[]
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:True

-Raw

Uwzględnia znaki nowego wiersza i zwraca całą zawartość pliku w jednym ciągu znaków 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 jest parametrem dynamicznym, który dostawca FileSystem dodaje do polecenia cmdlet Get-Content Ten parametr działa tylko na dyskach systemu plików.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-ReadCount

Określa liczbę wierszy zawartości, które są wysyłane przez potok jednocześnie. Wartość domyślna to 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. W miarę wzrostu wartości ReadCount czas zwracania pierwszego wiersza wzrasta, ale łączny czas operacji spada. To może mieć zauważalny wpływ na duże przedmioty.

Typ:Int64
Position:Named
Domyślna wartość:1
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Stream

Notatka

Ten parametr jest dostępny tylko w systemie Windows.

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

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

Ten parametr został wprowadzony w programie Windows PowerShell 3.0. W programie PowerShell 7.2, funkcja Get-Content może pobierać zawartość alternatywnych strumieni danych z katalogów, a także plików.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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ść 0 nie zwraca żadnych wierszy. Wartości ujemne powodują błąd.

Ten parametr został wprowadzony w programie PowerShell 3.0.

Typ:Int32
Aliasy:Last
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-TotalCount

Określa liczbę wierszy od początku pliku lub innego elementu. Wartość 0 nie zwraca żadnych wierszy. Wartości ujemne powodują błąd.

Możesz użyć nazwy parametru TotalCount lub jego aliasami, First lub Head.

Typ:Int64
Aliasy:First, Head
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Wait

Powoduje, że polecenie cmdlet czeka na czas nieokreślony, utrzymując plik otwarty 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 TotalCountGet-Content czeka, aż określona liczba wierszy będzie dostępna w określonym pliku. Jeśli na przykład określisz dla opcji TotalCount wartość 10, a ten plik ma już 10 lub więcej wierszy, to Get-Content zwraca 10 wierszy i kończy pracę. Jeśli plik ma mniej niż 10 wierszy, Get-Content wyprowadza każdy wiersz po nadejściu, ale czeka na nadejście dziesiątego wiersza przed wyjściem.

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

Wait jest parametrem dynamicznym, który dostawca systemu plików dodaje do polecenia cmdlet Get-Content. Ten parametr działa tylko na dyskach systemu plików. nie można połączyć wait z Raw.

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

Int64

Można przekierować liczbę odczytów lub całkowitą liczbę do tego cmdletu.

String[]

Możesz przekierować ścieżki do tego cmdletu za pomocą potoku.

PSCredential

Możesz przekazać poświadczenia 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 PowerShell zawiera następujące aliasy dla Get-Content:

  • Wszystkie platformy:
    • gc
    • type
  • Windows:
    • cat

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