Get content powershell: How to use PowerShell Get-Content to Read a File — LazyAdmin

Получение содержимого файла в Powershell с Get-Content на примерах

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





 




Для открытия файла ‘C:\text.txt’ можно использовать следующую команду:



Get-Content -Path 'C:\Windows\System32\drivers\etc\hosts'



Если у вас множество файлов или вы не уверены в назывании, то вы можете использовать подстановку. Символы подстановок бывают следующих типов:


  • ‘*’ — говорит об неизвестном количестве символов;
  • [a,b] — говорит, что в этом месте может быть буква ‘a’ или ‘b’;
  • ? — обозначает один неизвестный символ.

Каждый из символов выше можно применять вместе и неограниченное число раз, в любой части пути и имени.


В этом примере я открою сразу два файла: lmhosts и hosts:



Get-Content -Path 'C:\Windows\System32\drivers\etc\*st*'



Следующие примеры вернут аналогичный результат:



Get-Content -Path 'C:\Windows\System32\drivers\etc\[l,h]*ost*'
Get-Content -Path 'C:\Windows\System32\drivers\etc\*h?st*'



Для похожей фильтрации есть следующие параметры, которые так же позволяют использовать символы подстановок:


  • Include — в этом параметре мы добавляем шаблон, по которому будем включать файл;
  • Exclude — с помощью этого параметра исключает файлы;
  • Filter — исключает результаты.

Для каждого из этих параметров есть обязательно условие — использовать знак ‘*’ в конце пути.


Так мы вернем все файлы с расширением ‘.txt’:



Get-Content -Path 'C:\*' -Filter '*. txt'



В отличие от Filter, в Include и Exclude мы можем использовать несколько значений. В этом примере мы откроем файлы формата ‘.txt’ и ‘.ini’:



Get-Content -Path 'C:\*' -Include '*.txt','*.ini'



Полное и построчное чтение с поиском


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



Get-Content -Path 'C:\file*.txt' | Select-String -Pattern 'Line 8'



Что бы текст передавался полностью, а не построчно — используйте параметр Raw:



Get-Content -Path 'C:\file*.txt' -Raw | Select-String -Pattern 'Line 8'



Если вам вдруг понадобится выводить по 2 или более строк за раз, можно указать их количество через ReadCount:



Get-Content -Path 'C:\file*. txt' -ReadCount 2 | Select-String -Pattern 'Line 8'



Разделение файла


Файл выводится построчно из-за делиметра (разделителя), который по умолчанию равен ‘\n’ (идентификатор новой строки). Мы можем разделить файл иначе, например, использовав точку с запятой:



Get-Content -Path 'C:\delimiter.txt' -Delimiter ';'



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



$content = Get-Content -Path 'C:\delimiter.txt' -Delimiter ';'
# Выведем первый элемент
$content[0]
# Уберем разделитель во всех адресах
foreach ($c in $content){
    $c -replace ';',''
}



Подсчет количества строк


Построчный вывод с командой Powershell позволяет посчитать количество строк во всем файле. Для подсчета используется команда Measure-Object:



Get-Content -Path 'C:\file.txt' | measure



Если нужна только цифра, а не объект, можно сделать так:



(Get-Content -Path 'C:\file.txt' | measure).Count



Кодировки


В параметре -Encoding можно указать следующие кодировки:


  • ASCII
  • BigEndianUnicode
  • BigEndianUTF32
  • Byte
  • Default
  • OEM
  • Unicode
  • UTF7
  • UTF8
  • UTF32

Вам так же будет интересно:

Как искать файлы используя Powershell Get-ChildItem


 




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


  • Access to the path is denied
  • The FileSystem provider supports credentials only on the New-PSDrive cmdlet. Perform the operation again withoutspecifying credentials.

Для обхода этих ошибок, если у вас нет другого выхода, нужно использовать Invoke-Command (команда удаленного подключения). Для ее настройки могут потребоваться дополнительные настройки описанные в другой статье.


Сам процесс открытия файла под другим пользователем будет выглядеть так:



# Вводим свои учетные данные
$creds = Get-Credential
# Выполняем запрос под другим пользователем
Invoke-Command -Computer localhost -Credential $creds -ScriptBlock {Get-Content -Path 'C:\Folder\File2.txt'}


 




С помощью параметра Wait вы можете читать файл, который в этот момент обновляется системой или другим пользователем:



Get-Content -Path 'C:\file1.txt' -Wait



 




Можно ограничить вывод содержимого файла указав количество нужных строк в начале или конце:


  • Head — выведет указанное количество строк с начала;
  • Tail — выведет указанное количество строк с конца.

Так будут выведены только первые 5 строк:



Get-Content -Path 'C:\file1.txt' -Head 5



 


Вам так же будет интересно:

Создание и изменение в Powershell NTFS разрешений ACL




Get-Content не позволяет искать и открывать фалы  находящиеся внутри других каталогов. Такой поиск называется рекурсивным и он доступен в Get-ChildItem.


В следующем примере мы вернем файлы из всех каталогов и подкаталогов:



Get-ChildItem -Path 'C:\Windows\' -Recurse -File



File — возвращает только файлы. Каталоги нам не нужны.


С Get-ChildItem вы так же можете использовать Include,Exclude и Filter, которые были рассмотрены раннее. Использовать эти ключи лучше всего в первой команде т.к. это будет работать быстрее.


Через конвейер мы сможем открыть каждый файл, а с Select-Sting проверить есть ли в нем нужный текст. Так мы найдем файл с Powershell, который содержит строку ‘127.0.0.1’ в папке Windows:



Get-ChildItem -Path 'C:\Windows\System32\drivers\etc\' -Recurse -File |
Get-Content -Raw |
Select-String '127.0.0.1'


Если убрать параметр Raw, то у нас выведется только та строка, которую мы искали:



 




Вы так же можете изменить содержимое файла и перезаписать этот файл. Представим, что вам нужно заменить адрес ‘127.0.0.1’ в строке — это можно сделать так:



'My address: 127.0.0.1/24' -replace '127.0.0.1','192.168.3.2'


 


Или с помощью регулярного выражения (не точный шаблон):



'My address: 127.0.0.1/24' -replace '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}','192.168.3.2'



Для записи в файл у нас есть два варианта. Первый — это использовать перенаправление в виде знака ‘>’, который перезапишет все содержимое файла или создаст новый файл:



$file_content = Get-Content -Path 'C:\file1. txt'
$file_content -replace '127.0.0.1','192.168.3.2' > file1.txt



Второй вариант — использовать команду Set-Content:



$file_content = Get-Content -Path 'C:\file1.txt'
$file_content -replace '127.0.0.1','192.168.3.2' | Set-Content -Path 'C:\file1.txt'



 


Вам так же будет интересно:

Функции по работе со строками в Powershell




У меня есть файл ‘file.txt’ со следующим содержанием:



some text 123 some text 6 some
text 9 some text 312345
123.2


Шаблон регулярного выражения  ‘\d*\.?\d*’ говорит, что мы ищем число, после которого может быть точка, после которого могут быть еще числа. Таким образом мы захватим целые и числа с плавающей точкой. 


Для выделения таких чисел из строк нужно использовать Select-String:



$file = Get-Content -Path 'file. txt'
$result = Select-String -InputObject $file -Pattern '\d*\.?\d*' -AllMatches | Foreach {$_.matches}



Нам нужно отформатировать вывод убрав пустые строки и получить значения свойства Value:



$result | where Value -ne '' | select Value



Мы можем вернуть остаток от деления использовав %. Если число делится на 2 с остатком 0, то оно будет четным:



# Открываем файл
$opened_file = Get-Content -Path 'file.txt'
# Поиск чисел
$result = Select-String -InputObject $opened_file -Pattern '\d*\.?\d*' -AllMatches | Foreach {$_.matches}
# Исключение пустых строк в выводе
$result = ($result | where Value -ne '').Value
foreach ($num in $result){
   # Результат деления
   $n = $num%2
   if ($n -eq 0){Write-Output "Число четное: $num"}
   else {Write-Output "Число не четное: $num"}
}


 

. ..

Рекомендую

Подписывайтесь на наш Telegram канал

Теги:

#powershell

#файлы

Как использовать PowerShell Get-Content для чтения файла — LazyAdmin

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

Get-Content поставляется с несколькими параметрами, которые позволяют вам выбирать или фильтровать результаты, которые вы хотите извлечь из файла. А когда нужно обработать много больших файлов, то с помощью 9Параметр 0007 -raw может ускорить процесс.

В этой статье

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

Чтение файла с помощью Get-Content

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

 1..100 | ForEach-Object { Add-Content -Path .\LineNumbers.txt -Value "Это строка $_." } 

Приведенный выше код от Microsoft создает текстовый файл, в котором каждая строка начинается со строки «Это строка», за которой следует номер строки:

Чтобы просмотреть результаты вновь созданного файла, мы можем использовать команду Get -Контент командлета. Вам нужно только указать путь к файлу, чтобы начать читать его содержимое:

 Get-Content -Path . \LineNumbers.txt 

Если мы сохраним результат Get-Content в переменной, то увидим, что PowerShell сохраняет результаты в массиве. Это означает, что мы можем использовать любую функцию Array для результатов или обрабатывать каждую строку с помощью цикла ForEach:

 $contents = Get-Content -Path .\LineNumbers.txt
$contents.GetType()
# Результат
Базовый тип имени IsPublic IsSerial
-------- -------- ---- --------
True True Object[] System.Array
# Возвращаем 6-ю строку (индекс массива начинается с 0 😉 )
$ содержимое [5]
# Результат
Это строка 6 

Использование цикла ForEach для результата Get-Contents

Возврат первых или последних x строк

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

Для этого у нас есть два варианта, мы можем использовать параметр -TotalCount , который возвращает первые x элементов содержимого. Или мы можем использовать параметр -Tail , который возвращает последние x элементов файла.

Итак, вернемся к нашему примеру с файлом журнала. Мы хотим просмотреть последние 10 строк из журнала. Для этого нам нужно указать путь и добавить -Tail 10, чтобы вернуть только последние 10 строк:

 Get-Content C:\temp\files\la-srv-dc01.log -Tail 10 

Get- Content возвращает последние x строк

Чтобы прочитать первый x элемент из файла, нам нужно будет использовать параметр -TotalCount :

 Get-Content -Path . \LineNumbers.txt -TotalCount 5 

Возврат одной строки из файла

Если вы знаете, какая конкретно строка вам нужна из текстового файла, то можно выбрать только одну строку из текстового файла. Как известно, результаты хранятся в массиве. Таким образом, мы можем использовать индекс массива для выбора нужного нам номера строки.

Имейте в виду, что индекс массива начинается с 0, поэтому, если мы хотим вернуть строку 16, нам нужно указать номер индекса 15. Мы заключаем команду Get-Content в круглые скобки ( ) , чтобы PowerShell сначала завершил команду Get-Content, прежде чем она продолжится.

 (Get-Content-Path .\LineNumbers.txt)[15]
# Результат
Это строка 16. 

Если у вас большой текстовый файл, вы можете не читать его полностью, чтобы вернуть только одну строку. Что вы можете сделать, так это выбрать только первые или последние x строк из файла, а затем выбрать номер строки, используя индекс массива.

Допустим, нам нужна пятая строка из файла. Ставим TotalCount до 5, чтение только первых 5 строк и возврат последнего элемента из массива:

 (Get-Content -Path .\LineNumbers.txt -TotalCount 5)[-1]
# Результат
Это строка 5. 

Чтение нескольких файлов с помощью Get-Content

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

 Get-Content -Путь c:\temp\files\* 

Имейте в виду, что в результатах не будет ссылок на исходные файлы. Таким образом, вы не будете знать, из какого файла идет строка x.

Мы также можем отфильтровать, какие файлы мы хотим прочитать. Так, например, если вы хотите получить только содержимое всех файлов .log, вы можете добавить к нему параметр -Filter :

 Get-Content -Path c:\temp\files\* -Filter '* .log' 

Использование -Raw

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

Например, если у вас есть файл HTML, который вы используете в качестве шаблона для электронного письма, которое вы собираетесь отправить с помощью PowerShell. В файле HTML у нас есть заполнители, которые нам нужно заменить, например:

 

Здравствуйте, {{manager. firstname}},

Аккаунт для {{user.fullname}} готов. Ниже вы найдете данные для входа для {{user.firstname}}. Мы установили временный пароль, который должен быть меняется после первого входа.

В приложении вы найдете руководство для новых пользователей.

Вместо того, чтобы перебирать каждую строку, чтобы найти заполнители и заменить их, мы можем использовать параметр -Raw для чтения всего файла как одной строки и использовать оператор -Replace для замены заполнителей:

 (Get- Content -Path c:\temp\template.html -Raw) -replace '{{user.fullname}}', $user.fullName -replace '{{user.firstname}}', $user.givenName 

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

Например, чтение текстового файла размером 50 Мб занимает почти 5 секунд, как вы можете видеть на скриншоте ниже:

Но при использовании -Raw это заняло менее полсекунды:

array, то мы можем использовать -Raw в сочетании со строковым оператором -split для создания массива каждой строки файла. Этот метод по-прежнему в 5 раз быстрее, чем использование Get-Content без -Raw .

 $log = (Get-Content .\largefile.log -Raw) -split "`r`n" 

Более быстрое чтение файлов с помощью ReadAllLines

При обработке очень больших файлов размером от 100 МБ существует еще более быстрый способ чтения содержимого файла с помощью PowerShell. Метод .Net System.IO.File.ReadAllLines() . прочитает все строки в память за половину времени по сравнению с использованием метода -Raw.

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

 $log = [System.IO.File]::ReadAllLines('c:\temp\files\largefile.log') 

Вы также можете использовать метод [System.IO.File]::ReadLines , который еще быстрее. Но это сразу выведет содержимое на консоль, а не сохранит в памяти. Проблема с этим методом заключается в том, что вам нужно будет закрыть файл, когда закончите, иначе он будет заблокирован потоком.

Просмотр файлов с помощью -Wait

Последняя интересная функция Get-Contents заключается в том, что мы можем отслеживать или просматривать содержимое файла с помощью -Wait параметр. Если вы, например, хотите отслеживать файл журнала. Затем вместо того, чтобы каждый раз перезапускать командлет Get-Content, вы можете добавить параметр -wait .

Как только содержимое файла будет обновлено (и сохранено), он обновит вывод Get-Content.

 Get-Content -Path c:\temp\testfiles\LineNumbers.txt -Tail 5 -Подождите
# Результат
Это строка 96.
Это строка 97.
Это строка 98.
Это строка 99.
Это строка 100. 

Если мы добавим новые строки в конец файла, они появятся в результатах.

Подведение итогов

Командлет Get-Content в PowerShell отлично подходит, когда вам нужно быстро прочитать файл. А вот при работе с большими файлами действительно нужно использовать параметр -Raw хотя бы для ускорения процесса. Кроме того, попробуйте метод .Net, вы будете поражены его скоростью.

Надеюсь, эта статья была вам полезна. Если у вас есть какие-либо вопросы, просто напишите комментарий ниже.

Get-Content — команда PowerShell | PDQ

  Get-Content  [-Credential ] [-Delimiter ] [-Encoding {Unknown | Строка | Юникод | Байт |BigEndianUnicode | UTF8 | UTF7 | UTF32 | Асии | По умолчанию | OEM | BigEndianUTF32}] [-Exclude ] [-Filter] [-Force] [-Include ] -LiteralPath*  [-Raw] [-ReadCount  ] [-Stream ][-Tail ] [-TotalCount ] [-UseTransaction] [-Wait] [] 
  Get-Content  [-Path*]  [-Credential ] [-Delimiter ] [-Encoding {Unknown | Строка |Юникод | Байт | BigEndianUnicode | UTF8 | UTF7 | UTF32 | Асии | По умолчанию | OEM | BigEndianUTF32}] [-Exclude] [-Filter ] [-Force] [-Include ] [-Raw] [-ReadCount ] [-Stream ] [-Tail ] [-TotalCount ] [-UseTransaction] [-Wait] [] 
  Get-Content  [-Delimiter <строка>] [-Encoding {Неизвестно | Строка | Юникод | Байт | BigEndianUnicode | UTF8 | UTF7 |UTF32 | Асии | По умолчанию | Oem}] [-Force] [-Raw ] [-Stream ] [-Wait] [-UseTransaction][] 

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

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

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

Параметры

-Encoding

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

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

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

— ASCII: используется кодировка для набора символов ASCII (7-разрядный). — BigEndianUnicode: кодируется в формате UTF-16 с использованием порядка следования байтов. набор символов в последовательность байтов.— Строка: использует тип кодировки для строки.— Unicode: кодирует в формате UTF-16 с использованием порядка следования байтов.— UTF7: кодирует в формате UTF-7. — UTF8: Кодирует в формате UTF-8. — Неизвестно: Тип кодировки неизвестен или недействителен. Данные можно рассматривать как двоичные.

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

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

-Delimiter

  • Значение по умолчанию: Символ конца строки читает.

    По умолчанию используется «\n», символ конца строки.

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

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

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

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

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

    -Force []

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

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

    -Raw <переключатель>

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

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

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

    -Wait []

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

    Ожидает, пока командлет получит содержимое, прежде чем вернуть командную строку. Во время ожидания Get-Content проверяет файл каждую секунду, пока вы не прервете его, например, нажав CTRL+C.

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

    -Stream

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

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

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

    -UseTransaction []

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

    -Credential

    • Значение по умолчанию: Нет 0189

      Указывает учетную запись пользователя, у которой есть разрешение на выполнение этого действия. По умолчанию используется текущий пользователь.

      Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, например созданный командлетом Get-Credential. Если вы введете имя пользователя, вам будет предложено ввести пароль.

      Этот параметр не поддерживается ни одним поставщиком, установленным вместе с Windows PowerShell.

      -Exclude

      • Значение по умолчанию: Нет
      • Принимает ввод конвейера False

      Указывает в виде массива строк элемент или элементы, которые этот командлет пропускает при выполнении операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Подстановочные знаки разрешены.

      -Filter

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

        Задает фильтр в формате или на языке поставщика. Значение этого параметра определяет параметр Path. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, поскольку поставщик применяет их, когда этот командлет получает объекты, вместо того, чтобы Windows PowerShell фильтровала объекты после их извлечения.

        -Include

        • Значение по умолчанию: Нет 0002 Указывает в виде массива строк элемент или элементы, которые этот командлет включает в операция. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Подстановочные знаки разрешены.

          -LiteralPath

          • Это значение равно обязательно
          • Значение по умолчанию: Нет
          • Принимает ввод конвейера ByPropertyName

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

          -Path

          • Это значение требуется
          • Значение по умолчанию Нет
          • 901 84 Принимает ввод конвейера ByPropertyName

          Указывает путь к элементу. Get-Content получает содержимое элемента. Подстановочные знаки разрешены.

          -ReadCount

          • Значение по умолчанию: Нет
          • Принимает ввод конвейера ByPropertyName

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

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

          -Tail

          • Значение по умолчанию: Нет 89

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

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

            Можно использовать имя параметра Tail или его псевдоним Last.

            -TotalCount

            • Значение по умолчанию Нет
            • Принимает конвейерный ввод ByPropertyName

            Указывает количество строк от начала файла или другого элемента. По умолчанию -1 (все строки).

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

            Этот командлет поддерживает общие параметры: Verbose, Debug,ErrorAction, ErrorVariable, WarningAction, WarningVariable,OutBuffer, PipelineVariable и OutVariable.

            Входы

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

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

            Выходы

            Система.Объект, Система.Строка

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

            Примеры
            1. Эта команда получает содержимое файла Chapter1.txt и отображает его в консоли:
               C:\PS> Get-Content -Path C:\Chapters\chapter1.txt
               

              Параметр Path используется для указания имени элемента.

              Командлет Get-Content фактически передает содержимое по конвейеру, но, поскольку в конвейере нет других командлетов, Windows PowerShell форматирует содержимое и отображает его в консоли.

            2. Эта команда получает первые 50 строк Log060912. txt и сохраняет их в файле sample.txt:
               C:\PS> Get-Content C:\Logs\Log060912.txt -TotalCount 50 | Set-Content Sample.txt
               

              Команда использует командлет Get-Content для получения текста в файле. (Имя параметра Path, который является необязательным, опущено.) Параметр TotalCount ограничивает получение первых 50 строк. Оператор конвейера (|) отправляет результат в Set-Content, который помещает его в файл sample.txt.

            3. Эта команда получает пятую строку текстового файла Cmdlets.txt:
               C:\PS> (Get-Content Cmdlets.txt -TotalCount 5)[-1]
               

              Он использует параметр TotalCount для получения первых пяти строк, а затем использует запись массива для получения последней строки (обозначенной «-1») результирующего набора.

            4. Эта команда получает содержимое всех файлов CSV в подкаталоге DataSets:
               C:\PS> Get-Content .\DataSets\*.csv -Delimiter "*---*" -Force -Encoding UTF8
               

              Параметр Force используется для получения всех файлов, включая скрытые файлы, и параметр Encoding для указания кодировки файла.

              Команда также использует параметр Delimiter для разделения возвращенного содержимого на наборы, каждый из которых заканчивается строкой файла CSV, содержащей маркер «*—-*».

            5. Эта команда использует параметр Stream для получения содержимого альтернативного потока данных Zone.Identifier:
               C:\PS> Get-Content .\Copy-Scripts.ps1 -Stream Zone.Identifier
                 [ЗонаПередача]
                 ZoneId=3 

              Выходные данные включают значение идентификатора зоны 3, которое представляет Интернет.

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

            6. Команды в этом примере получают содержимое файла манифеста модуля (.psd1) в виде хэш-таблицы:
               C:\PS> $Manifest = (Get-Module -List PSScheduledJob).Path
              C:\PS> $Hash = Invoke-Expression (Get-Content $Manifest -Raw)
              C:\PS> $Хэш
                 Имя Значение
                 ---- -----
                 Авторское право c Microsoft Corporation. Все права защищены.
                 ModuleToProcess Microsoft.PowerShell.ScheduledJob.dll
                 FormatsToProcess PSScheduledJob. Format.ps1xml
                 PowerShellВерсия 3.0
                 CompanyName Корпорация Майкрософт
                 GUID 50cdb55f-5ab7-489ф-9e94-4ec21ff51e59
                 Автор Корпорация Майкрософт
                 CLRВерсия 4.0
                 CmdletsToExport {New-JobTrigger, Add-JobTrigger, Remove-JobTrigger, Get-JobTrigger...}
                 TypesToProcess PSScheduledJob.types.ps1xml
                 HelpInfoURI http://go.microsoft.com/fwlink/?LinkID=223911
                 Версия модуля 1.0.0.0
              C:\PS> $Hash.ModuleToProcess
              Microsoft.PowerShell.ScheduledJob.dll
               

              Файл манифеста содержит хэш-таблицу, но если вы получите содержимое без динамического параметра Raw, оно будет возвращено в виде массива строк с разделителями-новостроками.

              Динамический параметр Raw появился в Windows PowerShell 3.0.

              Первая команда использует свойство Path модулей, чтобы получить путь к файлу, содержащему манифест модуля для модуля PSScheduledJob. Он сохраняет путь в переменной $Manifest.

              Вторая команда использует командлет Invoke-Expression для запуска команды Get-Content и динамический параметр Raw командлета Get-Content для получения содержимого файла манифеста модуля в одной строке. Команда сохраняет хеш-таблицу в переменной $Hash.

              Третья команда получает хэш-таблицу в переменной Hash. Содержимое возвращается в виде набора пар «имя-значение».

              Четвертая команда использует свойство ModuleToProcess хэш-таблицы для получения значения ключа ModuleToProcess в манифесте модуля.

            7. В этом примере показано, как использовать параметр ReadCount командлета Get-Content со значением 0, чтобы избежать ошибок, связанных с байтами, при использовании командлета Set-Content для записи байтов в файл:
               C:\PS> $a = Get-Content -Path .\Download.zip -Encoding Byte -ReadCount 0
                 Set-Content -Path \\Server\Share\Download.zip -Encoding Byte -Value $a
                 $b = Get-Content-Path .\Download.zip-Encoding Byte
                 Set-Content -Path \\Server\Share\Download.zip -Encoding Byte -Value $b
                 Set-Content: невозможно продолжить кодирование байтов. При использовании байтового кодирования содержимое должно иметь тип byte.
                 В строке:1 символ:1
                 + Set-Content \\Server\Share\Download. zip -Encoding Byte -Value $b
                 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     + CategoryInfo: InvalidArgument: (:) [Set-Content], PSArgumentException
                     + FullyQualifiedErrorId: Аргумент, Microsoft.PowerShell.Commands.SetContentCommand 

              При получении содержимого файла в байтах командлет Get-Content создает объект (PSObject) для байтов при каждой операции чтения. Если вы читаете байты по одному, что является значением по умолчанию, Get-Content создает объект для каждого байта. Объекты вызывают ошибки при использовании командлета Set-Content для записи байтов в файл.

              Первая команда использует командлет Get-Content для получения содержимого файла Download.zip и сохранения его в переменной $a. Команда использует динамический параметр Encoding со значением Byte. Он также использует параметр ReadCount со значением 0, который указывает командлету Get-Content получить содержимое файла за одну операцию чтения. Значение параметра ReadCount по умолчанию, равное 1, получает по одному байту за раз.

              Вторая команда использует командлет Set-Content для записи байтов из переменной $a в файл Download.zip в общей папке. Команда выполняется.

              Третья и четвертая команды показывают одну и ту же последовательность без параметра ReadCount.

              Третья команда использует динамический параметр Encoding командлета Get-Content, чтобы получить содержимое файла Download.zip и сохранить его в переменной $b. Поскольку в команде отсутствует параметр ReadCount, используется значение по умолчанию, равное 1.

              Четвертая команда использует командлет Set-Content для записи байтов из переменной $b в файл Download.zip в общей папке. Поскольку содержимое представляет собой набор объектов, а не один объект, содержащий массив байтов, команда завершается ошибкой.

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