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 зависят от используемой платформы и файловой системы. Поддержка HardLink
SymLink
файловых систем Linux и macOS. 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.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:\a
b.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
является эквивалентом этой команды.
Получение сжатых и зашифрованных файлов
Эта команда возвращает файлы в текущем каталоге, которые сжаты или зашифрованы.
Он использует параметр "Атрибуты" с двумя значениями и Compressed
Encrypted
. Значения разделяются запятой ,
, представляющей оператор 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:
См. также
PowerShell