Поделиться через


Get-Content

Возвращает содержимое элемента в указанном расположении.

Синтаксис

Path (По умолчанию)

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

LiteralPath

Get-Content
    -LiteralPath <String[]>
    [-ReadCount <Int64>]
    [-TotalCount <Int64>]
    [-Tail <Int32>]
    [-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 использует параметр для указания пути к файлу 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

Фильтр можно указать в командлете 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 для получения потока байтов из файла. Параметр необработанного гарантирует, что байты возвращаются в виде [System.Byte[]]. Если параметр необработанного отсутствует, возвращаемое значение представляет собой поток байтов, который интерпретируется PowerShell как [System.Object[]].

Параметры

-AsByteStream

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

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

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

Свойства параметров

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Credential

Замечание

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

Свойства параметров

Тип:PSCredential
Default value:Current user
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Delimiter

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

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

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

Замечание

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

Свойства параметров

Тип:String
Default value:End-of-line character
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера: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 с пометкой порядка байтов (Byte Order Mark, BOM)
  • utf8NoBOM: Кодирует в формате UTF-8 без метки порядка байтов (BOM)
  • utf32: кодирует в формате UTF-32.

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

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

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

Замечание

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

Свойства параметров

Тип:Encoding
Default value:UTF8NoBOM
Допустимые значения:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Exclude

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

Введите элемент пути или шаблон, например *.txt. Разрешено использование подстановочных символов.

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

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Filter

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Force

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

Свойства параметров

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Include

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

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-LiteralPath

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

Дополнительную информацию см. в разделе about_Quoting_Rules.

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:PSPath, LP

Наборы параметров

LiteralPath
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Path

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

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

Path
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Raw

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

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

Свойства параметров

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-ReadCount

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

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

Свойства параметров

Тип:Int64
Default value:1
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Stream

Замечание

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

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

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

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

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Tail

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

Этот параметр появился в PowerShell 3.0.

Свойства параметров

Тип:Int32
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:Последний

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-TotalCount

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

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

Свойства параметров

Тип:Int64
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:Первый, Голова

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Wait

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

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

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

Свойства параметров

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

Входные данные

Int64

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

String

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

PSCredential

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

Выходные данные

Byte

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

String

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

Примечания

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

  • Все платформы:
    • gc
    • type
  • Виндоус:
    • cat

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