Имя поставщика

FileSystem

Диски

C, D

Краткое описание

Предоставляет доступ к файлам и каталогам.

Подробное описание

Поставщик Windows PowerShell FileSystem позволяет извлекать, добавлять, изменять, очищать и удалять файлы и каталоги в Windows PowerShell.

Поставщик FileSystem отображает диски Windows PowerShell, соответствующие логическим дискам, настроенным на компьютере, в том числе дискам, сопоставленным с общими сетевыми ресурсами. Например, компьютер с одним дисководом для гибких дисков, одним жестким диском и одним подключенным общим сетевым каталогом может иметь диски с именами A, C и Z. Поставщик FileSystem отображает диски Windows PowerShell, напрямую соответствующие A, C и Z, что позволяет ссылаться на них из оболочки Windows PowerShell. Например, чтобы сослаться на диск C, необходимо указать "C:", как показано в следующем примере:

Get-ChildItem 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 необходимо использовать следующую команду:

Get-ChildItem 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.

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

См. также