Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Имя поставщика
Файловая система
Drives
C:, , D:Temp: ...
Capabilities
фильтр, ShouldProcess
Краткое описание
Предоставляет доступ к файлам и каталогам.
Подробное описание
Поставщик файловой системы PowerShell fileSystem позволяет получать, добавлять, изменять, очищать и удалять файлы и каталоги в PowerShell.
Диски файловой системы
Начиная с версии PowerShell 7.0, диск под названием Temp: отображается на временный путь каталога пользователя. PowerShell использует метод .NET $Env:TEMP. В системах, отличных от Windows, расположение совпадает с $Env:TMPDIR или /tmp, если переменная среды не определена.
Поставщик FileSystem поддерживает следующие командлеты, описанные в этой статье.
- Get-Location
- "Настройка расположения"
- get-Item
- Get-ChildItem
- Вызвать-Элемент
- Переместить-объект
- нового элемента
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Очистить-элемент
- Clear-ItemProperty
- Remove-Item
- Удалить-СвойствоЭлемента
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Добавление содержимого
- очистить-контент
- Получить-содержимое
- Установить содержимое
Типы, предоставляемые этим поставщиком
Файлы — это экземпляры класса System.IO.FileInfo. Каталоги — это экземпляры класса System.IO.DirectoryInfo.
Система расширенных типов PowerShell добавляет дополнительные свойства к этим типам объектов для предоставления дополнительных сведений. Некоторые сведения зависят от платформы. Например, возможные значения свойства LinkType HardLink и SymLink. Windows NTFS поддерживает HardLink, SymLink, Junctionи несколько других значений для 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-ContentGet-ContentSet-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>
Возвращает каталоги (папки).
Параметр каталога
Чтобы получить только каталоги, используйте параметр каталога
Поддерживаемые командлеты
Get-ChildItem
Файл <SwitchParameter>
Получает файлы.
Параметр file появился в Windows PowerShell 3.0.
Чтобы получить только файлы, используйте параметр файла
Поддерживаемые командлеты
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-ContentClear-ContentGet-ItemGet-ContentRemove-ItemSet-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:
См. также
PowerShell