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 зависят от используемой платформы и файловой системы. Поддержка HardLinkSymLinkфайловых систем Linux и macOS. Windows NTFS поддерживает HardLink, SymLinkJunctionи несколько других значений для 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.txt файл:

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

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

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

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

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

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

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

По умолчанию 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:\ab.txtв:

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

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

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

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

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

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

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

Remove-Item -Path test.txt

Удаление файлов с помощью wild карта s

Эта команда удаляет все файлы в текущем каталоге с расширением .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.

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

Get-ChildItem -File -System -Recurse

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

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

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

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

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

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

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

Он использует параметр "Атрибуты" с двумя значениями и CompressedEncrypted. Значения разделяются запятой , , представляющей оператор 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 с меткой порядка байтов (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 вернуть весь файл в виде одной, неустранимой строки, введите значение, которое не существует в файле.

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

  • Get-Content

Wait <SwitchParameter>

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

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

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

  • Get-Content

Атрибуты <FlagsExpression>

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

Параметр "Атрибуты" появился в Windows PowerShell 3.0.

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

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

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

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

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

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

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

  • Get-ChildItem

Directory <SwitchParameter>

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

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

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

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

  • Get-ChildItem

File <SwitchParameter>

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

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

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

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

  • Get-ChildItem

Скрытый <switchParameter>

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

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

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

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

  • Get-ChildItem

ReadOnly <SwitchParameter>

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

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

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

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

  • Get-ChildItem

System <SwitchParameter>

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

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

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

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

  • Get-ChildItem

NewerThan <DateTime>

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

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

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

Старое <время даты и времени>

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

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

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

  • Test-Path

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

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

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

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

Raw <SwitchParameter>

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

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

  • Get-Content

Строка ItemType <>

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

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

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

  • Файлы
  • Directory
  • Символьная связь
  • Соединение
  • HardLink

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

  • New-Item

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

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

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

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

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

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

См. также