Get-Content
Получает содержимое элемента в указанном расположении.
Синтаксис
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 — это динамический параметр поставщика FileSystem.
По умолчанию 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
можно указать фильтр. При использовании фильтров для квалификации параметра Path необходимо включить конечную звездочку (*
), чтобы указать содержимое пути.
Следующая команда получает содержимое всех *.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 для получения потока байтов из файла. Необработанный параметр гарантирует, что байты возвращаются в виде[System.Byte[]]
. Если необработанный параметр отсутствует, возвращаемое значение представляет собой поток байтов, который интерпретируется PowerShell как [System.Object[]]
.
Параметры
-AsByteStream
Указывает, что содержимое должно читаться как поток байтов. Параметр AsByteStream появился в Windows PowerShell 6.0.
Предупреждение возникает при использовании параметра AsByteStream с параметром кодировки. Параметр AsByteStream игнорирует любую кодировку, а выходные данные возвращаются в виде потока байтов.
При чтении и записи в двоичные файлы используйте параметр AsByteStream и значение 0 для параметра ReadCount . Значение ReadCount в 0 считывает весь файл в одной операции чтения. Значение ReadCount по умолчанию, 1, считывает один байт в каждой операции чтения и преобразует каждый байт в отдельный объект. Однобайтовые выходные данные Set-Content
piping вызывают ошибки, если с параметром Set-Content
AsByteStream не используется.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Credential
Примечание.
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить свои учетные данные при выполнении этого командлета, используйте Invoke-Command.
Тип: | PSCredential |
Position: | Named |
Default value: | Current user |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Delimiter
Указывает разделитель, который Get-Content
используется для разделения файла на объекты во время чтения. Значение по умолчанию — \n
символ конца строки. При чтении текстового файла Get-Content
возвращает коллекцию строковых объектов, каждая из которых заканчивается символом конца строки. При вводе разделителя, который не существует в файле, Get-Content
возвращает весь файл в виде одного неустранимого объекта.
Этот параметр можно использовать для разделения большого файла на небольшие файлы, указав разделитель файлов в качестве разделителя. Разделитель сохраняется (не удаляется) и становится последним элементом в каждом разделе файла.
Разделитель — это динамический параметр, который поставщик FileSystem добавляет в Get-Content
командлет. Этот параметр работает только на дисках с файловой системой.
Примечание.
В настоящее время, когда значение параметра Разделителя является пустой строкой, Get-Content
ничего не возвращает. Это известная проблема. Чтобы принудительно Get-Content
вернуть весь файл как одну, неустранимую строку. Введите значение, которое не существует в файле.
Тип: | String |
Position: | Named |
Default value: | End-of-line character |
Обязательно: | 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 "windows-1251"
-Encoding 1251
). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
Начиная с PowerShell 7.4, можно использовать Ansi
значение параметра кодировки для передачи числового идентификатора для кодовой страницы ANSI текущего языка и региональных параметров без необходимости указывать его вручную.
Примечание.
UTF-7* больше не рекомендуется использовать. По состоянию на PowerShell 7.1 предупреждение записывается при указании utf7
параметра кодирования .
Тип: | Encoding |
Допустимые значения: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Exclude
Указывает как строковый массив, элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра определяет параметр Path.
Введите элемент пути или шаблон, например *.txt
. Можно использовать подстановочные знаки.
Параметр Exclude действует только в том случае, если команда включает содержимое элемента, напримерC:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Filter
Указывает фильтр для квалификации параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, поддерживающий использование фильтров. Синтаксис языка фильтра FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты после их получения.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Force
Принудительно может переопределить атрибут только для чтения или создать каталоги для завершения пути к файлу. Параметр Force не пытается изменить разрешения файла или переопределить ограничения безопасности.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Include
Указывает, как строковый массив, элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt"
. Можно использовать подстановочные знаки. Параметр Include действует только в том случае, если команда содержит содержимое элемента, например C:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно типизированно. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Дополнительные сведения см. в about_Quoting_Rules.
Тип: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Path
Указывает путь к элементу, в котором Get-Content
получает содержимое. Можно использовать подстановочные знаки. Пути должны вести к элементам, а не к контейнерам. Например, нужно указать путь к одному или нескольким файлам, а не путь к каталогу.
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-Raw
Игнорирует символы новой строки и возвращает все содержимое файла в одной строке с сохраненными новыми строками. По умолчанию новые символы в файле используются в качестве разделителей для разделения входных данных в массив строк. Этот параметр появился в PowerShell 3.0.
Необработанный — это динамический параметр, добавляющий поставщик FileSystem в Get-Content
командлет Этот параметр работает только на дисках файловой системы.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ReadCount
Определяет количество строк содержимого, передаваемых по конвейеру за один раз. Значение по умолчанию равно 1. Значение 0 (ноль) или отрицательные числа одновременно отправляет все содержимое.
Этот параметр не изменяет отображаемое содержимое, но влияет на время отображения содержимого. По мере увеличения значения ReadCount время, необходимое для возврата первой строки, увеличивается, но общее время операции уменьшается. Это может сделать заметное различие в больших элементах.
Тип: | Int64 |
Position: | Named |
Default value: | 1 |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Stream
Примечание.
Этот параметр доступен только в Windows.
Возвращает содержимое указанного альтернативного файлового потока NTFS из файла. Введите имя потока. Подстановочные знаки не поддерживаются.
Stream — это динамический параметр, который поставщик FileSystem добавляет в Get-Content
командлет.
Этот параметр работает только на дисках файловой системы в системах Windows.
Этот параметр впервые появился в Windows PowerShell 3.0. В PowerShell 7.2 Get-Content
можно получить содержимое альтернативных потоков данных из каталогов, а также файлов.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Tail
Указывает количество строк из конца файла или другого элемента. Можно использовать имя параметра Tail или его псевдоним , Last. Значение возвращаемых 0
строк не возвращается. Отрицательные значения вызывают ошибку.
Этот параметр появился в PowerShell 3.0.
Тип: | Int32 |
Aliases: | Last |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-TotalCount
Указывает количество строк с начала файла или другого элемента. Значение возвращаемых 0
строк не возвращается. Отрицательные значения вызывают ошибку.
Вы можете использовать имя параметра TotalCount или его псевдонимы, First или Head.
Тип: | Int64 |
Aliases: | First, Head |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Wait
Вызывает ожидание командлета на неопределенный срок, сохраняя файл открытым до прерывания. Во время ожидания Get-Content
проверяет файл один раз в секунду и выводит новые строки при наличии. При использовании с параметром Get-Content
TotalCount ожидает, пока указанное количество строк не будет доступно в указанном файле. Например, если указать TotalCount 10, а файл уже имеет 10 или более строк, Get-Content
возвращает 10 строк и завершает работу. Если файл имеет менее 10 строк, Get-Content
выводит каждую строку по мере поступления, но ожидает, пока десятая строка не появится перед выходом.
Вы можете прервать ожидание, нажав клавиши CTRL+C. При удалении файла возникает несрочная ошибка, которая также прерывает ожидание.
Ожидание — это динамический параметр, который поставщик FileSystem добавляет в Get-Content
командлет. Этот параметр работает только на дисках с файловой системой. Ожидание не может быть объединено с Raw.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать количество или общее количество операций чтения в этот командлет.
String[]
Пути к этому командлету можно передать.
Вы можете передать учетные данные в этот командлет.
Выходные данные
При использовании параметра AsByteStream этот командлет возвращает содержимое в виде байтов.
По умолчанию этот командлет возвращает содержимое в виде массива строк, по одному на строку. При использовании необработанного параметра возвращается одна строка, содержащая каждую строку в файле.
Примечания
PowerShell включает следующие псевдонимы для Get-Content
:
- Все платформы:
gc
type
- Windows:
cat
Командлет Get-Content
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы получить поставщиков в сеансе Get-PSProvider
, используйте командлет. Дополнительные сведения см. в about_Providers.
Связанные ссылки
PowerShell