Имя поставщика
FileSystem
Диски
C, D
Краткое описание
Предоставляет доступ к файлам и каталогам.
Подробное описание
Поставщик Windows PowerShell FileSystem позволяет извлекать, добавлять, изменять, очищать и удалять файлы и каталоги в Windows PowerShell.
Поставщик FileSystem отображает диски Windows PowerShell, соответствующие логическим дискам, настроенным на компьютере, в том числе дискам, сопоставленным с общими сетевыми ресурсами. Например, компьютер с одним дисководом для гибких дисков, одним жестким диском и одним подключенным общим сетевым каталогом может иметь диски с именами A, C и Z. Поставщик FileSystem отображает диски Windows PowerShell, напрямую соответствующие A, C и Z, что позволяет ссылаться на них из оболочки Windows PowerShell. Например, чтобы сослаться на диск C, необходимо указать "C:", как показано в следующем примере:
Эта команда возвращает все содержимое диска C, в том числе файлы и каталоги. Чтобы сослаться на определенный каталог или файл через поставщик FileSystem, требуется предоставить данные, необходимые для определения этого каталога или файла. Это значит, что в некоторых случаях необходимо указать полное имя. Полное имя включает имя диска (с двоеточием), любые имена каталогов и подкаталогов и имя файла (если это необходимо). Например, в следующем примере показано полное имя файла Shell.dll, расположенного в подкаталоге System32 каталога Windows на диске C:.
c:\windows\system32\shell.dll
Видно, что все элементы полного имени разделены обратной косой чертой (\). Оболочка Windows PowerShell позволяет также использовать прямую косую черту (/) для совместимости с некоторыми другими командными интерпретаторами.
В некоторых случаях полное имя необязательно при ссылке на файл или каталог. Например, если требуется доступ к файлу в текущем рабочем положении, достаточно указать только имя файла. Если текущим рабочим положением является c:\windows, список всех DLL-файлов в этом каталоге можно просмотреть при помощи следующей команды:
Get-ChildItem *.dll
Если рабочий каталог отличен от c:\windows, например c:\program files\Windows PowerShell, то команда должна включать полное имя:
Get-ChildItem c:\windows\*.dll
В некоторых случаях можно использовать относительные ссылки на положение. Если рабочим положением является c:\windows, и необходимо просмотреть список DLL-файлов в каталоге c:\windows\system32, можно использовать следующую команду:
Get-ChildItem .\system32\*.dll
Точка перед \system32 представляет текущее рабочее положение.
В некоторых ситуациях текущее рабочее положение находится на диске, отличном от диска FileSystem. В этом случае необходимо включить в ссылку имя целевого диска. Например, предположим, что текущим рабочим положением является диск "env:". Для просмотра содержимого диска C необходимо использовать следующую команду:
Примеры
Просмотр файловой системы
-------------------------- ПРИМЕР 1 --------------------------
Эта команда извлекает текущее местоположение:
get-location
Командлет Get-Location предлагает функциональность команд, подобных "cd" в командной строке Windows и "pwd" в UNIX. Чтобы получить дополнительные сведения, введите следующую команду: get-help get-location
-------------------------- ПРИМЕР 2 --------------------------
Эта команда задает текущее местоположение:
set-location C:
Получение сведений о файлах и каталогах
-------------------------- ПРИМЕР 1 --------------------------
Эта команда возвращает все файлы и каталоги из текущего каталога:
get-childitem
По умолчанию командлет Get-ChildItem не выполняет рекурсию. Если при запуске этой команды в текущем каталоге имеются файлы и папки, будут возвращены объекты System.IO.FileInfo и System.IO.DirectoryInfo.
-------------------------- ПРИМЕР 2 --------------------------
Эта команда возвращает все файлы и каталоги из текущего каталога с помощью командлета Get-ChildItem:
get-childitem | where-object {!$_.psiscontainer}
Она передает результаты работы по конвейеру командлету Where-Object, который просматривает свойство PSIsContainer и пропускает по конвейеру только объекты, которые не (!) являются контейнерами.
-------------------------- ПРИМЕР 3 --------------------------
Эта команда возвращает все файлы и каталоги из текущего каталога с помощью командлета Get-ChildItem. Она передает результаты работы по конвейеру командлету Where-Object, который просматривает свойство PSIsContainer и пропускает по конвейеру только те объекты, которые являются контейнерами.
get-childitem | where-object {$_.psiscontainer}
-------------------------- ПРИМЕР 4 --------------------------
Эта команда возвращает все файлы и каталоги из текущего каталога с помощью командлета Get-ChildItem:
get-item -path a | format-list *
Она передает результаты работы по конвейеру командлету Where-Object, который просматривает свойство PSIsContainer и пропускает по конвейеру только объекты, которые являются контейнерами.
-------------------------- ПРИМЕР 5 --------------------------
Эта команда использует командлет Get-Item, чтобы получить сведения о файле Test.txt.
get-item -path test.txt | format-list *
Командлет Format-List используется для отображения всех свойств конечного объекта.
Копирование файлов и каталогов
-------------------------- ПРИМЕР 1 --------------------------
Эта команда копирует файл A.txt из каталога C:\A в каталог C:\A\Bb:
copy-item -path C:\a\a.txt -destination C:\a\bb\a.txt
Файлы в каталоге назначения переписываются без запроса подтверждения.
-------------------------- ПРИМЕР 2 --------------------------
Эта команда копирует все файлы в каталоге C:\A\Bb, имеющие расширение TXT, в каталог C:\A\Cc\Ccc\:
copy-item -path C:\a\bb\*.txt -destination C:\a\cc\ccc\
Используются исходные имена файлов. Эта команда переписывает существующие файлы в каталоге назначения без запроса подтверждения.
-------------------------- ПРИМЕР 3 --------------------------
Копирует все каталоги и файлы из каталога C:\a в каталог C:\c. Если какие-либо копируемые каталоги уже существуют в целевом каталоге, то команда завершится с ошибкой, если не указан параметр Force.
copy-item -path C:\a\* -destination C:\c -recurse
Перемещение файлов и каталогов
-------------------------- ПРИМЕР 1 --------------------------
Эта команда перемещает файл C.txt из каталога C:\A в каталог C:\A\Aa.
move-item -path C:\a\c.txt -destination C:\a\aa
Команда не перезапишет автоматически существующий файл с тем же именем. Для принудительной перезаписи существующего файла необходимо передать командлету параметр Force.
-------------------------- ПРИМЕР 2 --------------------------
Эта команда перемещает каталог C:\A и все его содержимое в каталог C:\B.
move-item -path C:\a -destination C:\b
Нельзя перемещать каталог, если он является текущим положением.
Управление содержимым файла
-------------------------- ПРИМЕР 1 --------------------------
Эта команда добавляет строку "test content" в файл Test.txt:
add-content -path test.txt -value "test content"
Существующее содержимое файла Test.txt не удаляется.
-------------------------- ПРИМЕР 2 --------------------------
Эта команда получает содержимое файла Test.txt и отображает его в консоли.
get-content -path test.txt
Содержимое файла можно передать другому командлету по конвейеру. Например, следующая команда считывает содержимое файла Test.txt и передает его в качестве входных данных командлету ConvertTo-HTML: get-content -path test.txt | convertto-html
-------------------------- ПРИМЕР 3 --------------------------
Эта команда заменяет содержимое файла Test.txt на строку "test content":
set-content -path test.txt -value "test content"
Она перезаписывает содержимое файла Test.txt. Параметр Value командлета New-Item можно использовать для добавления содержимого в файл при его создании.
Управление дескрипторами безопасности
-------------------------- ПРИМЕР 1 --------------------------
Эта команда возвращает объект System.Security.AccessControl.FileSecurity:
get-acl -path test.txt | format-list -property *
Чтобы получить дополнительные сведения об этом объекте, передайте по конвейеру результаты выполнения этой команды командлету Get-Member. Либо см. раздел "Класс FileSecurity" (FileSecurity Class) в библиотеке MSDN по адресу http://go.microsoft.com/fwlink/?LinkId=145718 (на английском языке).
-------------------------- ПРИМЕР 2 --------------------------
Эта команда возвращает объект System.Security.AccessControl.DirectorySecurity:
get-acl -path test_directory | format-list -property *
Чтобы получить дополнительные сведения об этом объекте, передайте по конвейеру результаты выполнения этой команды командлету Get-Member. Либо см. раздел "Класс DirectorySecurity" (DirectorySecurity Class) в библиотеке MSDN по адресу http://go.microsoft.com/fwlink/?LinkId=145736 (на английском языке).
Создание файлов и каталогов
-------------------------- ПРИМЕР 1 --------------------------
Эта команда создает каталог Logfiles на диске C:
new-item -path c:\ -name logfiles -type directory
-------------------------- ПРИМЕР 2 --------------------------
Эта команда создает файл с именем Log2.txt в каталоге C:\Logfiles и добавляет в файл строку "test log".
new-item -path c:\logfiles -name log.txt -type file
-------------------------- ПРИМЕР 3 --------------------------
Создает файл с именем Log2.txt в каталоге C:\logfiles и добавляет в файл строку "test log".
new-item -path c:\logfiles -name log2.txt -type file -value "test log"
Переименование файлов и каталогов
-------------------------- ПРИМЕР 1 --------------------------
Эта команда переименовывает файл A.txt в каталоге C:\A в B.txt:
rename-item -path c:\a\a.txt -newname b.txt
-------------------------- ПРИМЕР 2 --------------------------
Эта команда переименовывает каталог C:\A\Cc в C:\A\Dd:
rename-item -path c:\a\cc -newname dd
Удаление файлов и каталогов
-------------------------- ПРИМЕР 1 --------------------------
Эта команда удаляет файл Test.txt в текущем каталоге:
remove-item -path test.txt
-------------------------- ПРИМЕР 2 --------------------------
Эта команда удаляет в текущем каталоге все файлы с расширением XML:
remove-item -path *.xml
Запуск программы при вызове связанного файла
-------------------------- ПРИМЕР 1 --------------------------
Первая команда использует командлет Get-Service, чтобы получить сведения о локальных службах.
Она передает информацию по конвейеру командлету Export-Csv и сохраняет эту информацию в файле Services.csv.
Вторая команда использует командлет Invoke-Item, чтобы открыть файл Services.csv в программе, связанной с расширением файла CSV:
get-service | export-csv -path services.csv invoke-item -path services.csv
Динамические параметры
Динамические параметры — это параметры командлетов, добавляемые поставщиком Windows PowerShell и доступные только при использовании командлета на диске поставщика.
Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>
Value | Description |
---|---|
Unknown |
Тип кодировки неизвестен или недопустим. Данные можно рассматривать как двоичные. |
String |
Используется тип кодировки для строки. |
Unicode |
Кодирует в формате UTF-16 с обратным порядком байтов. |
Byte |
Кодирует набор знаков в последовательность байтов. |
BigEndianUnicode |
Кодирует в формате UTF-16 с прямым порядком байтов. |
UTF8 |
Кодирует в формате UTF-8. |
UTF7 |
Кодирует в формате UTF-7. |
ASCII |
Используется кодировка для набора знаков ASCII (7-bit). |
Поддержка командлетов
Delimiter <System.String>
Указывает разделитель, используемый при чтении файла. По умолчанию "\n" (конец строки).
Поддержка командлетов
Wait <System.Management.Automation.SwitchParameter>
Ожидает содержимое для добавления в файл. Если содержимое добавлено, возвращает добавленное содержимое. Если содержимое не изменилось, возвращает весь файл.
Во время ожидания командлет Get-Content проверяет файл раз в секунду, пока не будет прерван, например, нажатием сочетания клавиш CTRL+C.