Get-Content (Microsoft.PowerShell.Management)


Get-Content

Модуль:
Microsoft.PowerShell.Management

Получает содержимое элемента в указанном месте.

Синтаксис

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

Описание

Командлет Get-Content получает содержимое элемента в расположении, указанном путем, например текст в файле или содержимое функции. Для файлов содержимое считывается по одной строке и возвращает коллекцию объектов, каждый из которых представляет строку содержимого.

Начиная с PowerShell 3.0, Get-Content также может получить указанное количество строк из начала или конца элемента.

Примеры

Пример 1. Получение содержимого текстового файла

В этом примере получается содержимое файла в текущем каталоге. Файл LineNumbers.txt содержит 100 строк в формате Это строка X и используется в нескольких примерах.

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.

Значения массива 1-100 передаются по конвейеру в командлет ForEach-Object. ForEach-Object использует блок сценария с командлетом Add-Content для создания файла LineNumbers.txt. Переменная $_ представляет значения массива при отправке каждого объекта по конвейеру. Командлет Get-Content использует параметр Path для указания файла LineNumbers.txt и отображает содержимое в консоли PowerShell.

Пример 2. Ограничьте количество строк, возвращаемых Get-Content

Эта команда получает первые пять строк файла. Параметр TotalCount получает первые пять строк контента. В этом примере используется 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

Пример 3. Получение определенной строки содержимого из текстового файла.

Эта команда получает определенное количество строк из файла, а затем отображает только последнюю строку этого содержимого. Параметр TotalCount получает первые 25 строк контента. В этом примере используется файл LineNumbers.txt, указанный в примере 1.

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

This is Line 25

Команда Get-Content заключена в круглые скобки, чтобы команда завершилась перед переходом к следующему шагу. Get-Contentвозвращает массив строк. Это позволяет вам добавить обозначение индекса после скобок для получения определенного номера строки. В этом случае индекс [-1] указывает последний индекс в возвращаемом массиве из 25 полученных строк.

Пример 4: Получить последнюю строку текстового файла

Эта команда получает последнюю строку содержимого из файла. В этом примере используется файл LineNumbers.txt, созданный в примере 1.

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

This is Line 100

В этом примере используется командлет Get-Item, чтобы продемонстрировать, что вы можете передавать файлы в Get-Content. Параметр Tail получает последнюю строку файла. Этот метод быстрее, чем получение всех строк в переменной и использование индексной нотации [-1].

Пример 5. Получите содержимое альтернативного потока данных.

В этом примере описывается, как использовать параметр Stream для получения содержимого альтернативного потока данных для файлов, хранящихся на томе Windows NTFS. В этом примере командлет Set-Content используется для создания образца содержимого в файле с именем 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

Параметр Stream — это динамический параметр поставщика файловой системы. По умолчанию Get-Content извлекает данные только из потока по умолчанию или потока :$DATA. Потоки можно использовать для хранения скрытых данных, таких как атрибуты, настройки безопасности и другие данные. Их также можно хранить в каталогах, не являясь дочерними элементами.

Пример 6. Получите необработанный контент

Команды в этом примере получают содержимое файла в виде одной строки, а не массива строк. По умолчанию без динамического параметра Raw содержимое возвращается в виде массива строк, разделенных символами новой строки. В этом примере используется файл LineNumbers.txt, указанный в примере 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.

Пример 7. Использование фильтров с Get-Content

Вы можете указать фильтр для командлета Get-Content. При использовании фильтров для уточнения параметра Путь необходимо добавить завершающую звездочку (*), чтобы указать содержимое пути.

Следующая команда получает содержимое всех файлов *.log в каталоге C:\Temp.

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

Пример 8. Получите содержимое файла в виде массива байтов.

В этом примере показано, как получить содержимое файла в виде [byte[]] как одного объекта.

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

Первая команда использует параметр AsByteStream для получения потока байтов из файла. Параметр Raw гарантирует, что байты будут возвращены в виде [System.Byte[]]. Если параметр Raw отсутствовал, возвращаемое значение представляет собой поток байтов, который интерпретируется PowerShell как [System.Object[]].

Параметры

-AsByteStream

Указывает, что содержимое следует читать как поток байтов. Параметр AsByteStream появился в Windows PowerShell 6.0.

Предупреждение выдается при использовании параметра AsByteStream с параметром Encoding. Параметр AsByteStream игнорирует любую кодировку, и выходные данные возвращаются в виде потока байтов.

При чтении и записи двоичных файлов используйте параметр AsByteStream и значение 0 для параметра ReadCount. Значение ReadCount, равное 0, считывает весь файл за одну операцию чтения. Значение ReadCount по умолчанию, равное 1, считывает один байт в каждой операции чтения и преобразует каждый байт в отдельный объект. Передача однобайтового вывода в Set-Content приводит к ошибкам, если вы не используете параметр AsByteStream с Set-Content.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Credential

Примечание

Этот параметр не поддерживается никакими поставщиками, установленными с помощью PowerShell. Чтобы выдать себя за другого пользователя или повысить свои учетные данные при запуске этого командлета, используйте Invoke-Command.

Тип :

PSCredential

Позиция:

Именованный

Значение по умолчанию:

Текущий пользователь

Необходимый:

False

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-Delimiter

Указывает разделитель, который Get-Content использует для разделения файла на объекты во время чтения. По умолчанию используется \n, символ конца строки. При чтении текстового файла Get-Content возвращает коллекцию строковых объектов, каждый из которых заканчивается символом конца строки. Когда вы вводите разделитель, которого нет в файле, Get-Content возвращает весь файл как один неограниченный объект.

Вы можете использовать этот параметр, чтобы разделить большой файл на файлы меньшего размера, указав разделитель файлов в качестве разделителя. Разделитель сохраняется (не удаляется) и становится последним элементом в каждом разделе файла.

Разделитель — это динамический параметр, который поставщик FileSystem добавляет в командлет Get-Content. Этот параметр работает только на дисках с файловой системой.

Примечание

В настоящее время, если значение параметра Delimiter представляет собой пустую строку, Get-Content ничего не возвращает. Это известная проблема. Чтобы заставить Get-Content вернуть весь файл в виде одной неограниченной строки. Введите значение, которого нет в файле.

Тип :

String

Позиция:

Именованный

Значение по умолчанию:

Символ конца строки

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Encoding

Указывает тип кодировки целевого файла. Значение по умолчанию — utf8NoBOM.

Допустимые значения этого параметра следующие:

  • ascii: использует кодировку набора символов ASCII (7-бит).
  • ansi: использует кодировку для кодовой страницы ANSI текущего языка и региональных параметров. Эта опция была добавлена в PowerShell 7.4.
  • bigendianunicode: кодирует в формате UTF-16 с использованием обратного порядка байтов.
  • bigendianutf32: кодирует в формате UTF-32, используя обратный порядок байтов.
  • oem: использует кодировку по умолчанию для MS-DOS и консольных программ.
  • unicode: кодирует в формате UTF-16 с прямым порядком байтов.
  • utf7: кодирует в формате UTF-7.
  • utf8: кодирует в формате UTF-8.
  • utf8BOM: кодирует в формате UTF-8 с меткой порядка байтов (BOM).
  • utf8NoBOM: кодирует в формате UTF-8 без метки порядка байтов (BOM).
  • utf32: кодирует в формате UTF-32.

Кодировка — это динамический параметр, который поставщик FileSystem добавляет в командлет Get-Content. Этот параметр доступен только на дисках с файловой системой.

Начиная с PowerShell 6.2, параметр Encoding также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, -Encoding 1251) или строковые имена зарегистрированных кодовых страниц (например, -Encoding). "windows-1251"). Дополнительные сведения см. в документации .NET для Encoding.CodePage.

Начиная с PowerShell 7.4, вы можете использовать значение Ansi для параметра Encoding, чтобы передать числовой идентификатор для текущей кодовой страницы ANSI языка и региональных параметров без необходимости указывать его вручную.

Примечание

UTF-7* больше не рекомендуется использовать. Начиная с PowerShell 7.1, предупреждение выводится, если вы укажете utf7 для параметра Кодировка.

Тип :

Кодирование

Принятые значения:

ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32

Позиция:

Именованный

Значение по умолчанию:

UTF8NoBOM

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Exclude

Указывает в виде массива строк элемент или элементы, которые этот командлет исключает из операции. Значение этого параметра определяет параметр Path.

Введите элемент пути или шаблон, например *.txt. Допускаются подстановочные знаки.

Параметр Exclude действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое C:\Windows.

Тип :

String[]

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

True

-Filter

Указывает фильтр для уточнения параметра Path. Поставщик FileSystem — единственный установленный поставщик PowerShell, поддерживающий использование фильтров. Синтаксис языка фильтров FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, поскольку поставщик применяет их, когда командлет получает объекты, а не заставляет PowerShell фильтровать объекты после их получения.

Тип :

String

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

True

-Force

Force может переопределить атрибут «только для чтения» или создать каталоги для завершения пути к файлу. Параметр Force не пытается изменить права доступа к файлу или переопределить ограничения безопасности.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Include

Указывает в виде массива строк элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt". Допускаются подстановочные знаки. Параметр Include действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое C:\Windows.

Тип :

String[]

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

True

-LiteralPath

Указывает путь к одному или нескольким местоположениям. Значение LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.

Дополнительные сведения см. в разделе about_Quoting_Rules.

Тип :

String[]

Псевдонимы:

PSPath, LP

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-Path

Указывает путь к элементу, из которого Get-Content получает содержимое. Допускаются подстановочные знаки. Пути должны быть путями к элементам, а не к контейнерам. Например, вы должны указать путь к одному или нескольким файлам, а не путь к каталогу.

Тип :

String[]

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

True

-Raw

Игнорирует символы новой строки и возвращает все содержимое файла в одной строке с сохранением символов новой строки. По умолчанию символы новой строки в файле используются в качестве разделителей для разделения входных данных на массив строк. Этот параметр был введен в PowerShell 3.0.

Raw — это динамический параметр, который поставщик FileSystem добавляет в командлет Get-Content. Этот параметр работает только на дисках с файловой системой.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-ReadCount

Указывает, сколько строк содержимого отправляется через конвейер одновременно. Значение по умолчанию — 1. При значении 0 (ноль) или отрицательных числах весь контент отправляется одновременно.

Этот параметр не меняет отображаемый контент, но влияет на время, необходимое для отображения контента. По мере увеличения значения ReadCount время, необходимое для возврата первой строки, увеличивается, но общее время операции уменьшается. Это может иметь заметное значение для крупных предметов.

Тип :

Int64

Позиция:

Именованный

Значение по умолчанию:

1

Необходимый:

False

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-Stream

Примечание

Этот параметр доступен только в Windows.

Получает содержимое указанного альтернативного потока файлов NTFS из файла. Введите имя потока. Подстановочные знаки не поддерживаются.

Stream — это динамический параметр, который поставщик FileSystem добавляет в командлет Get-Content. Этот параметр работает только на дисках файловой системы в системах Windows.

Этот параметр был введен в Windows PowerShell 3.0. В PowerShell 7.2 Get-Content может извлекать содержимое альтернативных потоков данных как из каталогов, так и из файлов.

Тип :

String

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Tail

Указывает количество строк с конца файла или другого элемента. Вы можете использовать имя параметра Tail или его псевдоним Last. Значение 0 не возвращает строк. Отрицательные значения вызывают ошибку.

Этот параметр был введен в PowerShell 3.0.

Тип :

Int32

Псевдонимы:

Last

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-TotalCount

Указывает количество строк от начала файла или другого элемента. Значение 0 не возвращает строк. Отрицательные значения вызывают ошибку.

Вы можете использовать имя параметра TotalCount или его псевдонимы: First или Head.

Тип :

Int64

Псевдонимы:

First, Head

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-Wait

Заставляет командлет ждать неопределенное время, оставляя файл открытым, пока он не будет прерван. Во время ожидания Get-Content проверяет файл раз в секунду и выводит новые строки, если они есть. При использовании с параметром TotalCount Get-Content ожидает, пока указанное количество строк не станет доступным в указанном файле. Например, если вы указали TotalCount, равный 10, и файл уже содержит 10 или более строк, Get-Content вернет 10 строк и завершит работу. Если в файле меньше 10 строк, Get-Content выводит каждую строку по мере ее поступления, но перед выходом ждет, пока не появится десятая строка.

Вы можете прервать Подождать, нажав Ctrl+C. Удаление файла вызывает непрерывную ошибку, которая также прерывает ожидание.

Wait — это динамический параметр, который поставщик файловой системы добавляет в командлет Get-Content. Этот параметр работает только на дисках с файловой системой. Подождите нельзя сочетать с Raw.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

Int64

В этот командлет можно передать счетчик прочтений или общее количество.

Строка[]

Вы можете передать пути к этому командлету.

PSCredential

Вы можете передать учетные данные этому командлету.

Выходы

Байт

При использовании параметра AsByteStream этот командлет возвращает содержимое в байтах.

Строка

По умолчанию этот командлет возвращает содержимое в виде массива строк, по одной в каждой строке. Когда вы используете параметр Raw, он возвращает одну строку, содержащую каждую строку в файле.

Примечания

PowerShell включает следующие псевдонимы для Get-Content:

  • Все платформы:

      gc
      type
  • Windows:

      cat

Командлет Get-Content предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы получить поставщиков в сеансе, используйте командлет Get-PSProvider. Дополнительные сведения см. в разделе about_Providers.