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


about_FileSystem_Provider

Имя поставщика

FileSystem

Диски

C:, D:, Temp: ...

Возможности

Filter, ShouldProcess

Краткое описание

Предоставляет доступ к файлам и каталогам.

Подробное описание

Поставщик файловой системы PowerShell позволяет получать, добавлять, изменять, очищать и удалять файлы и каталоги в PowerShell.

Диски FileSystem — это иерархическое пространство имен, содержащее каталоги и файлы на компьютере. Диск FileSystem может быть логическим или физическим диском, каталогом или сопоставленной сетевой папкой.

Начиная с PowerShell версии 7.0 диск с именем TEMP: сопоставляется с временным путем пользователя к каталогу. PowerShell использует метод .NET GetTempPath() для определения расположения временной папки. В Windows расположение совпадает с расположением $env:TEMP. В системах, отличных от Windows, расположение совпадает $env:TMPDIR с расположением или /tmp , если переменная среды не определена.

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

Типы, предоставляемые этим поставщиком

Файлы являются экземплярами класса System.IO.FileInfo . Каталоги — это экземпляры класса System.IO.DirectoryInfo .

Система расширенных типов PowerShell добавляет дополнительные свойства к этим типам объектов для предоставления дополнительных сведений. Некоторые сведения зависят от платформы. Например, возможные значения свойства LinkType зависят от используемой платформы и файловой системы. Файловые системы Linux и macOS поддерживают HardLink и SymLink. Windows NTFS поддерживает HardLink, SymLink, Junctionи несколько других значений для LinkType.

При использовании Get-Item или Get-ChildItem для сведений о связанном элементе свойство Mode содержит объект , указывающий l , что элемент является ссылкой. Свойство LinkType содержит тип ссылки.

AppExecLink ссылки создаются при установке приложения из Microsoft Store. Для AppExecLink ссылок Windows не предоставляет значения для свойств LinkType или LinkTarget .

Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe

    Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

Поставщик FileSystem предоставляет свои хранилища данных, сопоставляя все логические диски на компьютере как диски PowerShell. Для работы с диском FileSystem можно изменить расположение на диск, используя имя диска, за которым следует двоеточие (:).

Set-Location C:

Вы также можете работать с поставщиком FileSystem с любого другого диска PowerShell. Чтобы ссылаться на файл или каталог из другого расположения, используйте имя диска (C:, D:, ...) в пути.

Примечание

PowerShell использует псевдонимы, чтобы обеспечить привычный способ работы с путями поставщика. Такие команды, как dir и ls , теперь являются псевдонимами для Get-ChildItem, cd является псевдонимом для Set-Location. и pwd является псевдонимом для Get-Location.

Получение файлов и каталогов

Командлет Get-ChildItem возвращает все файлы и каталоги в текущем расположении. Вы можете указать другой путь для поиска и использовать встроенные параметры для фильтрации и управления глубиной рекурсии.

Get-ChildItem

Дополнительные сведения об использовании командлетов см. в разделе Get-ChildItem.

Копирование файлов и каталогов

Командлет Copy-Item копирует файлы и каталоги в указанное расположение. Параметры доступны для фильтрации и рекурсии, как Get-ChildItemи .

Следующая команда копирует все файлы и каталоги по пути C:\temp\ в папку C:\Windows\Temp.

Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File

Copy-Item Перезаписывает файлы в целевом каталоге без запроса подтверждения.

Эта команда копирует a.txt файл из C:\a каталога в C:\a\bb каталог .

Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt

Копирует все каталоги и файлы в C:\a каталоге .C:\c Если какой-либо из каталогов для копирования уже существует в целевом каталоге, команда завершается ошибкой, если не указан параметр Force .

Copy-Item -Path C:\a\* -Destination C:\c -Recurse

Дополнительные сведения см. в разделе Copy-Item.

Перемещение файлов и каталогов

Эта команда перемещает c.txt файл в C:\a каталоге в каталог:C:\a\aa

Move-Item -Path C:\a\c.txt -Destination C:\a\aa

По умолчанию командлет не перезаписывает существующий файл с тем же именем. Чтобы принудить командлет перезаписать существующий файл, укажите параметр Force .

Вы не можете переместить каталог, если он является текущим расположением. При использовании для Move-Item перемещения каталога в текущем расположении отображается эта ошибка.

C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp

Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand

Управление содержимым файла

Получение содержимого файла

Эта команда получает содержимое файла Test.txt и отображает его в консоли.

Get-Content -Path Test.txt

Содержимое файла можно передать другому командлету по конвейеру. Например, следующая команда считывает содержимое Test.txt файла и передает их в качестве входных данных командлету ConvertTo-Html :

Get-Content -Path Test.txt | ConvertTo-Html

Вы также можете получить содержимое файла, указав в префиксе путь к поставщику знаком доллара ($). Путь должен быть заключен в фигурные скобки из-за ограничений именования переменных. Дополнительные сведения см. в разделе about_Variables.

${C:\Windows\System32\Drivers\etc\hosts}

Добавление содержимого в файл

Эта команда добавляет строку test content в Test.txt файл:

Add-Content -Path test.txt -Value "test content"

Существующее содержимое Test.txt файла не удаляется.

Замена содержимого файла

Эта команда заменяет содержимое Test.txt файла строкой test content:

Set-Content -Path test.txt -Value "test content"

Он перезаписывает содержимое Test.txt. Параметр Value командлета New-Item можно использовать для добавления содержимого в файл при его создании.

Циклическое перебирает содержимое файла

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

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

Первая команда получает Employees.txt файл и разбивает его на разделы, каждый из которых заканчивается словами "End of Employee Record" и сохраняет его в переменной $e .

Вторая команда использует нотацию массива для получения первого элемента в коллекции в $e. Он использует индекс 0, так как массивы PowerShell основаны на нулях.

Дополнительные сведения о Get-Content командлете см. в разделе справки Get-Contentдля .

Дополнительные сведения о массивах см. в разделе about_Arrays.

$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]

Управление дескрипторами безопасности

Просмотр списка ACL для файла

Эта команда возвращает объект System.Security.AccessControl.FileSecurity :

Get-Acl -Path test.txt | Format-List -Property *

Дополнительные сведения об этом объекте можно передать в командлет Get-Member или в разделе Класс FileSecurity .

Создание файлов и каталогов

Создание каталога

Эта команда создает logfiles каталог на C диске:

New-Item -Path c:\ -Name logfiles -Type directory

PowerShell также включает функцию mkdir (псевдоним ), mdкоторая использует New-Item командлет для создания нового каталога.

Создание файла

Эта команда создает log2.txt файл в каталоге C:\logfiles , а затем добавляет в файл строку журнала тестирования:

New-Item -Path c:\logfiles -Name log2.txt -Type file

Создание файла с содержимым

Создает файл с именем log2.txt в каталоге C:\logfiles и добавляет в файл строку "журнал тестирования".

New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"

Переименование файлов и каталогов

Переименуйте файл

Эта команда переименовывает a.txt файл в каталоге C:\a на b.txt:

Rename-Item -Path c:\a\a.txt -NewName b.txt

Переименование каталога

Эта команда переименовывает каталог в C:\a\ccC:\a\dd:

Rename-Item -Path c:\a\cc -NewName dd

Удаление файлов и каталогов

Удаление файла

Эта команда удаляет Test.txt файл в текущем каталоге:

Remove-Item -Path test.txt

Удаление файлов с помощью подстановочных знаков

Эта команда удаляет все файлы в текущем каталоге с расширением .xml имени файла:

Remove-Item -Path *.xml

Запуск программы путем вызова связанного файла

Вызов файла

Командлет Get-Service для получения сведений о локальных службах передает их командлету Export-Csv для сохранения сведений Services.csv в файле.

Затем Invoke-Item открывает services.csv файл в программе, связанной с расширением .csv :

Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv

Получение файлов и папок с указанными атрибутами

Получение системных файлов

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

Параметр File используется для получения только файлов (не каталогов), а параметр System — для получения только элементов с атрибутом system.

Он использует параметр Recurse для получения элементов в текущем каталоге и всех подкаталогов.

Get-ChildItem -File -System -Recurse

Получение скрытых файлов

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

Он использует параметр Attributes с двумя значениями: !Directory+Hidden, который получает скрытые файлы, и !Directory, который получает все остальные файлы.

Get-ChildItem -Attributes !Directory,!Directory+Hidden

dir -att !d,!d+h является эквивалентом этой команды.

Получение сжатых и зашифрованных файлов

Эта команда возвращает файлы в текущем каталоге, которые сжаты или зашифрованы.

Он использует параметр Attributes с двумя значениями, Compressed и Encrypted. Значения разделяются запятой , , представляющей оператор OR.

Get-ChildItem -Attributes Compressed,Encrypted

Динамические параметры

Динамические параметры — это параметры командлета, которые добавляются поставщиком PowerShell и доступны только при использовании командлета на диске с поддержкой поставщика.

Кодировка <>

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

  • ascii: использует кодировку для 7-разрядной кодировки ASCII.
  • 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.

Поддерживаемые командлеты

  • Add-Content
  • Get-Content
  • Set-Content

Строка разделителя <>

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

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

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

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

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

Примечание

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

Поддерживаемые командлеты

  • Get-Content

Wait <SwitchParameter>

Ожидает содержимое для добавления в файл. Если содержимое добавлено, возвращает добавленное содержимое. Если содержимое не изменилось, возвращает весь файл.

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

Поддерживаемые командлеты

  • Get-Content

Атрибуты <FlagsExpression>

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

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

Параметр Attributes поддерживает следующие атрибуты:

  • Архив
  • Compressed
  • Устройство
  • Каталог
  • Зашифрована
  • Скрыта
  • Обычный
  • NotContentIndexed
  • В отключенном режиме
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • Системные функции
  • Временные процедуры

Описание этих атрибутов см. в перечислении FileAttributes .

Используйте следующие операторы для объединения атрибутов.

  • ! -НЕ
  • +
  • , -ИЛИ

Пробелы между оператором и его атрибутами не допускаются. Однако допустима постановка пробелов перед запятыми.

Поддерживаемые командлеты

  • Get-ChildItem

Directory <SwitchParameter>

Извлекает каталоги (папки).

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

Чтобы получить только каталоги, используйте параметр Directory и опустите параметр File . Чтобы исключить каталоги, используйте параметр File и опустите параметр Directory или используйте параметр Attributes .

Поддерживаемые командлеты

  • Get-ChildItem

Параметр file <SwitchParameter>

Извлекает файлы.

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

Чтобы получить только файлы, используйте параметр File и опустите параметр Directory . Чтобы исключить файлы, используйте параметр Directory и опустите параметр File или используйте параметр Attributes .

Поддерживаемые командлеты

  • Get-ChildItem

Скрытый <параметр SwitchParameter>

Возвращает только скрытые файлы или каталоги (папки). По умолчанию Get-ChildItem получает только не скрытые элементы.

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

Чтобы получить только скрытые элементы, используйте параметр Hidden , его h псевдонимы или ahзначение Hidden параметра Attributes . Чтобы исключить скрытые элементы, опустите параметр Hidden или используйте параметр Attributes .

Поддерживаемые командлеты

  • Get-ChildItem

ReadOnly <SwitchParameter>

Извлекает только файлы или каталоги (папки), доступные для чтения.

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

Чтобы получить только элементы, доступные только для чтения, используйте параметр ReadOnly , его ar псевдоним или значение ReadOnly параметра Attributes . Чтобы исключить элементы, доступные только для чтения, используйте параметр Attributes .

Поддерживаемые командлеты

  • Get-ChildItem

System <SwitchParameter>

Извлекает только системные файлы или каталоги (папки).

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

Чтобы получить только системные файлы и папки, используйте параметр System , его as псевдоним или значение System параметра Attributes . Чтобы исключить системные файлы и папки, используйте параметр Attributes .

Поддерживаемые командлеты

  • Get-ChildItem

NewerThan <DateTime>

Возвращает $True , если LastWriteTime значение файла больше указанной даты. В противном случае она возвращает $False.

Введите объект DateTime , например объект, возвращаемый командлетом Get-Date , или строку, которую можно преобразовать в объект DateTime , например "August 10, 2011 2:00 PM".

Поддерживаемые командлеты

OlderThan <DateTime>

Возвращает $True , если LastWriteTime значение файла меньше указанной даты. В противном случае она возвращает $False.

Введите объект DateTime , например, возвращаемый Get-Date командлетом, или строку, которую можно преобразовать в объект DateTime , например "August 10, 2011 2:00 PM".

Поддерживаемые командлеты

  • Test-Path

<строка Stream>

Управляет альтернативными потоками данных. Введите имя потока. Подстановочные знаки разрешены только в Get-Item для команд и Remove-Item на диске файловой системы.

Поддерживаемые командлеты

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

Raw <SwitchParameter>

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

Поддерживаемые командлеты

  • Get-Content

Строка ItemType <>

Этот параметр позволяет указать тип элемента для создания с помощью New-Item.

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

FileSystem На диске допускаются следующие значения:

  • Файл
  • Каталог
  • SymbolicLink
  • Соединение
  • HardLink

Поддерживаемые командлеты

  • New-Item

Использование конвейера

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

Получение справки

Начиная с Windows PowerShell 3.0, стали доступны настраиваемые разделы справки по командлетам поставщика, в которых объясняется поведение этих командлетов на диске файловой системы.

Чтобы получить разделы справки, настроенные для диска файловой системы, выполните команду Get-Help на диске файловой системы или укажите диск файловой системы с помощью параметра Get-HelpPath.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

См. также раздел