Как в PowerShell прочитать содержимое файла (аналог cat)

Как в PowerShell передать содержимое файла в командлет

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

В Bash на Linux когда нужно передать данные из файла команды или работают со стандартным вводом или путь до файла указывается с помощью опции. В PowerShell командлеты также могут принимать данные из стандартного ввода, например:

Get-Content -Path C:\Domain01.txt | Restart-Computer

Как вы уже могли понять из приведённой выше команды, аналогом cat в PowerShell является командлет Get-Content. Если нужно в опцию передать содержимое файла, то используется конструкция пример которой показан в следующей команде:

Add-Computer -ComputerName (Get-Content Servers.txt) -DomainName Domain02 -Credential Domain02\Admin02 -Options Win9xUpgrade -Restart

Аналог cat, tail и head в PowerShell

В Linux имеется несколько команд для чтения файла:

  • cat — считывает весь файл
  • tail — считывает указанное количество строк (по умолчанию 10) от конца файла
  • head — считывает указанное количество строк (по умолчанию 10) от начала файла

Для всего этого в PowerShell используется командлет Get-Content.

Пример считывания содержимого файла C:\PS\InstalledRoles.csv (при этом содержимое будет передано по конвейеру или если это последний командлет, то будет выведено в стандартный вывод, на экран):

Get-Content C:\PS\InstalledRoles.csv

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

Начиная с PowerShell 3.0, Get-Content может также получать указанное количество строк от начала или до конца элемента.

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

Get-ChildItem > current_dir.txt

Как прочитать файл и сохранить его в переменной

В следующей команде будет прочитан файл current_dir.txt и его содержимое будет сохранено в переменную $dir:

$dir=Get-Content current_dir.txt

Опция -Path и использование подстановочных знаков с Get-Content

Для указания файла можно использовать опцию -Path, но её можно и опускать:

Get-Content -Path 'C:\Server\bin\PHP\php.ini'

Можно использовать подстановочные знаки:

Get-Content -Path 'C:\Server\bin\PHP\php.*'

Смотрите также: Подстановочные символы в PowerShell

Путь должен указать до элементов, но не до контейнеров. Например, можно указать путь до одного или более файлов, но не до директории.

Как прочитать определённое количество строк от начала файла

С помощью опции -TotalCount (её псевдонимы -First и -Head) вы моете указать количество строк, которое должно быть прочитано от начала файла.

Следующая команда прочитает 13 первых строк файла current_dir.txt:

Get-Content current_dir.txt -TotalCount 13

Как прочитать определённое количество строк от конца файла

С помощью опции -Tail вы можете прочитать последние строки файла, например:

Get-Content current_dir.txt -Tail 10

Как узнать, сколько строк было прочитано

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

(Get-Content current_dir.txt).Count
(Get-Content current_dir.txt).Length

Для подсчёта количества строк вы также можете использовать командлет Measure-Object:

Get-Content current_dir.txt | Measure-Object -Line | select Lines

Обратите внимание, что эти команды вернули разное количество строк. Первая команда вернула общее количество строк вместе с пустыми, а вторая посчитала только непустые строки.

Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *