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 поддерживает следующие командлеты, которые рассматриваются в этой статье.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Add-Content
- Clear-Content
- Get-Content
- Set-Content
Типы, предоставляемые этим поставщиком
Файлы являются экземплярами класса 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\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
Получение скрытых файлов
Эта команда возвращает все файлы, включая скрытые файлы, в текущем каталоге.
Он использует параметр 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-Help
Path.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: