• Время чтения: 8 мин

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

Возвращает содержимое файла.

Синтаксис

Get-Content [-Delimiter <string>] [-Encoding {<Unknown> | <String> | <Unicode> | <Byte> | <BigEndianUnicode> | <UTF8> | <UTF7> | <UTF32> | <Ascii> | <Default> | <Oem>}] [-Force] [-Raw <switch>] [-Stream <string>] [-Wait] [-UseTransaction] [<CommonParameters>]   

Описание

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

Примечание. В этом файле справки содержатся сведения о действии командлета Get-Content на диске файловой системы. Для получения сведений о командлете Get-Content на всех дисках введите "Get-HelpGet-Content -Path $null" или см. раздел Get-Content по адресу: http://go.microsoft.com/fwlink/?LinkID=113310.

Параметры

-Encoding <FileSystemCmdletProviderEncoding>

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

Допустимые значения:

— ASCII: использует 7-разрядную кодировку ASCII.

— BigEndianUnicode: кодирует в формате UTF-16 с обратным порядком байтов.

— Byte: кодирует набор символов в последовательность байтов.

— String: использует тип кодировки для строки.

— Unicode: кодирует в формате UTF-16 с прямым порядком байтов.

— UTF7: кодирует в формате UTF-7.

— UTF8: кодирует в формате UTF-8.

— Unknown: тип кодировки неизвестен или является недопустимым. Данные можно рассматривать как двоичные.


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

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

Требуется?

false

Указать положение?

с именем

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

ASCII

Принимать входные данные конвейера?

false

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

false

-Delimiter <string>

Указывает разделитель, используемый командлетом Get-Content для разделения файла на объекты при чтении.


Значение по умолчанию — "n", символ конца строки.

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

При вводе разделителя, который не существует в файле, командлет Get-Content возвращает весь файл как единый неразделенный объект.

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

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

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

Требуется?

false

Указать положение?

с именем

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

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

Принимать входные данные конвейера?

false

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

false


-Force

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

Требуется?

false

Указать положение?

с именем

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

Нет

Принимать входные данные конвейера?

false

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

false

-Raw <switch>

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

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

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

Требуется?

false

Указать положение?

с именем

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

Принимать входные данные конвейера?

false

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

false


-Wait

Ожидает, пока командлет получит содержимое, до возвращения командной строки. Во время ожидания командлет Get-Content проверяет файл один раз в секунду до тех пор, пока этот процесс не будет прерван пользователем, например путем нажатия сочетания клавиш CTRL+C.

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

Требуется?

false

Указать положение?

с именем

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

Нет

Принимать входные данные конвейера?

false

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

false

-Stream <string>

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

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

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


Требуется?

false

Указать положение?

с именем

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

Принимать входные данные конвейера?

false

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

false

-UseTransaction

Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в разделе about_Transactions.

Требуется?

false

Указать положение?

с именем

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

Принимать входные данные конвейера?

false

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

false


<CommonParameters>

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

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

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

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

System.Int64, System.String[], System.Management.Automation.PSCredential

Количество операций чтения, общее количество, пути или учетные данные можно передать в командлет Get-Content по конвейеру.

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

System.Object, System.String

Get-Content возвращает объекты, которые представляют содержимое, получаемое этим командлетом. Тип объекта зависит от типа содержимого. При использовании параметра Stream командлет возвращает содержимое альтернативного потока данных в виде строки.

Пример 1

C:PS>Get-Content -Path C:Chapterschapter1.txt  Description ----------- This command gets the content of the Chapter1.txt file and displays it in the console. It uses the Path parameter to specify the name of the item.   Get-Content actually passes the content down the pipeline, but because there are no other cmdlets in the pipeline, Windows PowerShell formats the contents and displays it in the console.        

Пример 2

C:PS>Get-Content C:LogsLog060912.txt -TotalCount 50 | Set-Content Sample.txt  Description ----------- This command gets the first 50 lines of the Log060912.txt file and stores them in the sample.txt file.   The command uses the Get-Content cmdlet to get the text in the file. (The name of Path parameter, which is optional, is omitted.) The TotalCount parameter limits the retrieval to the first 50 lines. The pipeline operator (|) sends the result to Set-Content, which places it in the sample.txt file.      

Пример 3

C:PS>(Get-Content Cmdlets.txt -TotalCount 5)[-1]  Description ----------- This command gets the fifth line of the Cmdlets.txt text file. It uses the TotalCount parameter to get the first five lines and then uses array notation to get the last line (indicated by "-1") of the resulting set.      

Пример 4

C:PS>Get-Content .DataSets*.csv -Delimiter "*---*" -Force -Encoding UTF8  Description ----------- This command gets the contents of all CSV files in the DataSets subdirectory. It uses the Force parameter to get all files, including hidden files, and the Encoding parameter to specify the file encoding.   The command also uses the Delimiter parameter to divide the returned content into sets, each of which ends at the CSV file row that contains the "*----*" marker.        

Пример 5

C:PS>Get-Content .Copy-Scripts.ps1 -Stream Zone.Identifier  [ZoneTransfer] ZoneId=3  Description ----------- This command uses the Stream parameter to get the content of the Zone.Identifier alternate data stream. The output includes Zone ID value of 3, which represents the Internet.  The Stream parameter is introduced in Windows PowerShell 3.0.      

Пример 6

C:PS>$Manifest = (Get-Module -List PSScheduledJob).Path  C:PS>$Hash = Invoke-Expression (Get-Content $Manifest -Raw)  C:PS>$Hash  Name Value ---- ----- Copyright © Microsoft Corporation. All rights reserved. ModuleToProcess Microsoft.PowerShell.ScheduledJob.dll FormatsToProcess PSScheduledJob.Format.ps1xml PowerShellVersion 3.0 CompanyName Microsoft Corporation GUID 50cdb55f-5ab7-489f-9e94-4ec21ff51e59 Author Microsoft Corporation CLRVersion 4.0 CmdletsToExport {New-JobTrigger, Add-JobTrigger, Remove-JobTrigger, Get-JobTrigger...} TypesToProcess PSScheduledJob.types.ps1xml HelpInfoURI http://go.microsoft.com/fwlink/?LinkID=223911 ModuleVersion 1.0.0.0  C:PS>$Hash.ModuleToProcess Microsoft.PowerShell.ScheduledJob.dll  Description ----------- The commands in this example get the contents of a module manifest file (.psd1) as a hash table.  

e manifest file contains a hash table, but if you get the contents without the Raw dynamic parameter, it is returned as an array of newline-delimited strings. The Raw dynamic parameter is introduced in Windows PowerShell 3.0. The first command uses the Path property of modules to get the path to the file that contains the module manifest for the PSScheduledJob module. It saves the path in the $Manifest variable. The second command uses the Invoke-Expression cmdlet to run a Get-Content command and the Raw dynamic parameter of the Get-Content cmdlet to get the contents of the module manifest file in a single string. The command saves the hash table in the $Hash variable. The third command gets the hash table in the Hash variable. The contents is returned as a collection of name-value pairs. The fourth command uses the ModuleToProcess property of the hash table to get the value of the ModuleToProcess key in the module manifest.

Пример 7

C:PS>$a = Get-Content -Path .Download.zip -Encoding Byte -ReadCount 0  Set-Content -Path \ServerShareDownload.zip -Encoding Byte -Value $a   $b = Get-Content -Path .Download.zip -Encoding Byte Set-Content -Path \ServerShareDownload.zip -Encoding Byte -Value $b  Set-Content : Cannot proceed with byte encoding. When using byte encoding the content must be of type byte. At line:1 char:1 + Set-Content \ServerShareDownload.zip -Encoding Byte -Value $b  + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  + CategoryInfo : InvalidArgument: (:) [Set-Content], PSArgumentException  + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.SetContentCommand  Description ----------- This example shows how to use the ReadCount parameter of the Get-Content cmdlet with a value of 0 to avoid byte-related errors when using the Set-Content cmdlet to write the bytes to a file.  When getting the content of a file in bytes, Get-Content creates an object (PSObject) for the bytes in each read operation. If you read the bytes one at a time, which is the default, Get-Content creates an object for each byte. The objects cause errors when you use the Set-Content cmdlet to write the bytes to a file.  The first command uses the Get-Content cmdlet to get the contents of the Download.zip file and save it in the $a variable. The command uses the Encoding dynamic parameter with a value of Byte. It also uses the ReadCount parameter with a value of 0, which directs Get-Content to get the file contents in a single read operation. The default value of the ReadCount parameter, 1, gets one byte at a time.  The second command uses the Set-Content cmdlet to write the bytes in the $a variable to the Download.zip file on a file share. The command succeeds.  The third and fourth commands show the same sequence without the ReadCount parameter.   The third command uses the Encoding dynamic parameter of the Get-Content cmdlet to get the contents of the Download.zip file and save it in the $b variable. Because the command omits the ReadCount parameter, it uses the default value of 1.  The fourth command uses the Set-Content cmdlet to write the bytes in the $b variable to the Download.zip file on a file share. Because the content is a collection of objects, rather than a single object that contains a byte array, the command fails.      

See Also

Concepts

Поставщик FileSystem

technet.microsoft.com

Syntax

Get-Content  [-Path] <string[]>  [-ReadCount <long>]  [-TotalCount <long>][-Tail <int>]  [-Filter <string>]  [-Include <string[]>]  [-Exclude <string[]>][-Force]  [-Credential <PSCredential>]  [-Delimiter <string>]  [-Wait]  [-Raw][-Encoding <System.Text.Encoding>]  [-AsByteStream]  [<CommonParameters>]
Get-Content  -LiteralPath <string[]>  [-ReadCount <long>]  [-TotalCount <long>][-Tail <int>]  [-Filter <string>]  [-Include <string[]>]  [-Exclude <string[]>][-Force]  [-Credential <PSCredential>]  [-Delimiter <string>]  [-Wait]  [-Raw][-Encoding <System.Text.Encoding>]  [-AsByteStream]  [<CommonParameters>]

Description

The Get-Content cmdlet gets the content of the item at the location specified by the path, such as the text in a file or the content of a function. For files, the content is read one line at a time and returns a collection of objects, each of which represents a line of content.

Beginning in Windows PowerShell 3.0, Get-Content can also get a specified number of lines from the beginning or end of an item.

Examples

Example 1: Get the content of a text file

Get-Content -Path C:ChaptersChapter1.txt

This command gets the content of the Chapter1.txt file. It uses the Path parameter to specify the name of the item. Get-Content passes the content down the pipeline Because there are no other pipeline elements, the content is formatted by default and displayed at the command line.

Example 2: Get the first 50 lines from a text file and store the results in another file

Get-Content c:LogsLog060912.txt -TotalCount 50 | Set-Content Sample.txt

This command gets the first 50 lines of Log060912.txt and writes them into Sample.txt. The command uses the Get-Content cmdlet to get the text in the file. (The name of Path parameter, which is optional, is omitted.) The TotalCount parameter limits the content retrieved to the first 50 lines. The pipeline operator (|) sends the result to the Set-Content cmdlet, which places it in the Sample.txt file.

Example 3: Get the fifth line of a text file

(Get-Content Cmdlets.txt -TotalCount 5)[-1]

This command gets the fifth line of the Cmdlets.txt text file. It uses the TotalCount parameter to get the first five lines and then uses array notation to get the last line (indicated by "-1") of the resulting set.

Example 4: Get the first and last line of a text file

Get-ChildItem .*.txt | ForEach-Object {Get-Content $_ -TotalCount 1; Get-Content $_ -Tail 1}

This command gets the first and last lines of each text file in the current directory. The command uses the Tail parameter and the Head alias of the TotalCount parameter

Example 5: Get the content of an alternate data stream

This command uses the -Stream parameter to get the content of the Zone.Identifier alternate data stream. The output includes Zone ID value of 3, which represents the internet.

Get-Content .Copy-Scripts.ps1 -Stream Zone.Identifier    [ZoneTransfer]  ZoneId=3

Example 6: Getting a hashtable out of file contents as a hashtable

The commands in this example get the contents of a module manifest file (.psd1) as a hash table. The manifest file contains a hash table, but if you get the contents without the -Raw dynamic parameter, it is returned as an array of newline-delimited strings.

# First, use the -Path property of modules to get the path to the file that contains  # the module manifest for the PSScheduledJob module.  # Store the path in the Manifest variable.  $Manifest = (Get-Module -ListAvailable PSScheduledJob).Path  # Use the Invoke-Expression cmdlet to run a Get-Content command and the -Raw dynamic parameter  # of the Get-Content cmdlet to get the contents of the module manifest file in a single string.  # Store the hashtable in the Hash variable.  $Hash = Invoke-Expression (Get-Content $Manifest -Raw)  # Return the contents of the hashtable as a collection of name-value pairs.  $Hash    Name Value  ---- -----  Copyright © Microsoft Corporation. All rights reserved.  ModuleToProcess Microsoft.PowerShell.ScheduledJob.dll  FormatsToProcess PSScheduledJob.Format.ps1xml  PowerShellVersion 3.0  CompanyName Microsoft Corporation  GUID 50cdb55f-5ab7-489f-9e94-4ec21ff51e59  Author Microsoft Corporation  CLRVersion 4.0  CmdletsToExport {New-JobTrigger, Add-JobTrigger, Remove-JobTrigger, Get-JobTrigger...}  TypesToProcess PSScheduledJob.types.ps1xml  HelpInfoURI http://go.microsoft.com/fwlink/?LinkID=223911  ModuleVersion 1.0.0.0    # Use the `ModuleToProcess` property of the hash table to get the value of the `ModuleToProcess` key in the module manifest.  $Hash.ModuleToProcess    Microsoft.PowerShell.ScheduledJob.dll

Optional Parameters

Inputs

System.Int64, System.String[], System.Management.Automation.PSCredential

You can pipe the read count, total count, paths, or credentials to Get-Content.

Outputs

System.Byte, System.String

Get-Content returns strings or bytes. The output type depends upon the type of content that you specify as input.

Notes

The Get-Content cmdlet is designed to work with the data exposed by any provider. To get the providers in your session, use the Get-PsProvider cmdlet. For more information, see about_Providers.

  • Add-Content
  • Clear-Content
  • Set-Content
  • Get-PSProvider
  • about_Providers