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.