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


about_FileSystem_Provider

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

Файловая система

Drives

C:, , D:Temp: ...

Capabilities

фильтр, ShouldProcess

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

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

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

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

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

Начиная с версии 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.

При использовании или для сведений о связанном элементе свойство режима содержит , чтобы указать, что элемент является ссылкой. Свойство 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

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

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

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

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

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

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

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

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

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

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

Цикл по содержимому файла

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

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

Первая команда получает файл Employees.txt и разбивает его на разделы, каждая из которых заканчивается словами "Конец записи сотрудника" и сохраняет его в переменной $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\cc в C:\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

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

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

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

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

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

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

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

Он использует параметр атрибутов с двумя значениями, и . Значения разделяются запятыми , который представляет оператор OR.

Get-ChildItem -Attributes Compressed,Encrypted

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

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

Кодировка <Кодировка>

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

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

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

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

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

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

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

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

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

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

Заметка

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

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

  • Get-Content

Ожидание <SwitchParameter>

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

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

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

  • Get-Content

Атрибуты <FlagsExpression>

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

Параметр атрибутов был введён в Windows PowerShell 3.0.

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

  • Архив
  • сжатый
  • Устройство
  • каталог
  • Зашифрованные
  • скрытое
  • обычные
  • NotContentIndexed
  • оффлайн
  • Только чтение
  • ReparsePoint
  • SparseFile
  • система
  • временные

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

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

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

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

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

  • Get-ChildItem

каталог <SwitchParameter>

Возвращает каталоги (папки).

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

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

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

  • Get-ChildItem

Файл <SwitchParameter>

Получает файлы.

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

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

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

  • Get-ChildItem

Скрытые <SwitchParameter>

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

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

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

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

  • Get-ChildItem

Только для чтения <Параметр переключения>

Получает только файлы и каталоги (папки) с доступом только для чтения.

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

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

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

  • Get-ChildItem

<параметр переключения> системы

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

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

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

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

  • Get-ChildItem

Новее чем <ДатаВремя>

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

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

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

  • тестового пути

Старше чем <ДатаВремя>

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

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

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

  • Test-Path

Строка потока <>

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

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

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

Необработанные <SwitchParameter>

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

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

  • Get-Content

Строка ItemType <>

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

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

В диске FileSystem разрешены следующие значения:

  • Файл
  • Каталог
  • Символическая ссылка
  • Перекрёсток
  • HardLink

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

  • New-Item

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

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

Получение помощи

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

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

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

См. также