Поделиться через


Поставщик FileSystem

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

FileSystem

Диски

C:, D: ...

Возможности

Filter, ShouldProcess

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

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

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

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

Диски FileSystem — это иерархическое пространство имен, содержащее каталоги и файлы на компьютере. Диск FileSystem может быть логическим или phsyical диском, каталогом или сопоставленной сетевой папкой.

Поставщик FileSystem поддерживает следующие командлеты, описанные в этой статье.

Типы, предоставляемые этим поставщиком

Файлы являются экземплярами класса System.IO.FileInfo . Каталоги — это экземпляры класса System.IO.DirectoryInfo .

Поставщик 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 командлет использует символ конца строки в качестве разделителя, поэтому он получает файл в виде коллекции строк, причем каждая строка — в виде одной строки в файле.

С помощью -Delimiter параметра можно указать альтернативный разделитель. Если в качестве его значения будут заданы символы, обозначающие конец раздела или начало следующего раздела, файл можно будет разделить на логические части.

Первая команда получает 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 " в библиотеке MSDN (Microsoft Developer Network).

Изменение списка ACL для файла

Create и настройка списка ACL для файла

Создание файлов и каталогов

Создание каталога

Эта команда создает 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\ccC:\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 и доступны только при использовании командлета на диске с поддержкой поставщика.

Кодировка <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

Указывает кодировку файла. Значение по умолчанию — ASCII.

  • ASCII: использует кодировку для 7-разрядной кодировки ASCII.
  • BigEndianUnicode: кодирует в формате UTF-16 с использованием порядка байтов с большим байтом.
  • String: использует тип кодирования для строки.
  • Юникод: кодирует в формате UTF-16 с использованием порядка байтов с минимальным порядком байтов.
  • UTF7: кодирует в формате UTF-7.
  • UTF8: кодирует в формате UTF-8.
  • UTF8BOM: кодирует в формате UTF-8 с меткой порядка байтов (BOM)
  • UF8NOBOM: кодирует в формате UTF-8 без метки порядка байтов (BOM)
  • UTF32: кодирует в формате UTF-32.
  • По умолчанию: кодирует на установленной по умолчанию кодовой странице.
  • OEM: использует кодировку по умолчанию для MS-DOS и консольных программ.
  • Неизвестно: тип кодирования неизвестен или недопустим. Данные можно обрабатывать как двоичные.

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

Разделитель <System.String>

Указывает разделитель, используемый командлетом Get-Content для разделения файла на объекты при чтении.

По умолчанию используется \nсимвол конца строки.

При чтении текстового файла Get-Content возвращает коллекцию строковых объектов, каждый из которых заканчивается символом разделителя.

Введя разделитель, который не существует в файле, Get-Content возвращает весь файл в виде одного объекта без разделителей.

Этот параметр можно использовать для разбиения большого файла на меньшие файлы, указав разделитель файла, например "Конец примера", в качестве разделителя. Разделитель сохраняется (не удаляется) и становится последним элементом в каждом разделе файла.

Примечание

В настоящее время, когда значение -Delimiter параметра является пустой строкой, Get-Content ничего не возвращает. Это известная проблема. Чтобы принудительно применить командлет Get-Content для возврата всего файла в виде единой неразделенной строки, введите значение, которое не существует в файле.

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

Wait <System.Management.Automation.SwitchParameter>

Ожидает содержимое для добавления в файл. Если содержимое добавлено, возвращает добавленное содержимое. Если содержимое не изменилось, возвращает весь файл.

Во время ожидания командлет Get-Content проверяет файл раз в секунду, пока не будет прерван, например, нажатием сочетания клавиш CTRL+C.

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

Атрибуты <FlagsExpression>

Извлекает файлы и папки с указанными атрибутами. Этот параметр поддерживает все атрибуты и позволяет указывать сложные сочетания атрибутов.

Параметр -Attributes появился в Windows PowerShell 3.0.

Параметр -Attributes поддерживает следующие атрибуты:

  • Архив
  • Compressed
  • Устройство
  • Каталог
  • Зашифрована
  • Скрыта
  • Обычный
  • NotContentIndexed
  • В отключенном режиме
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • Системные функции
  • Временные процедуры

Описание этих атрибутов см. в перечислении FileAttributes .

Используйте следующие операторы для объединения атрибутов.

  • ! -НЕ
  • +
  • , -ИЛИ

Пробелы между оператором и его атрибутами не допускаются. Однако допустима постановка пробелов перед запятыми.

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

Directory <System.Management.Automation.SwitchParameter>

Извлекает каталоги (папки).

Параметр -Directory появился в Windows PowerShell 3.0.

Чтобы получить только каталоги, используйте -Directory параметр и опустите -File параметр . Чтобы исключить каталоги, используйте -File параметр и опустите -Directory параметр или используйте -Attributes параметр .

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

File <System.Management.Automation.SwitchParameter>

Извлекает файлы.

Параметр -File появился в Windows PowerShell 3.0.

Чтобы получить только файлы, используйте -File параметр и опустите -Directory параметр . Чтобы исключить файлы, используйте -Directory параметр и опустите -File параметр или используйте -Attributes параметр .

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

Скрытый <параметр System.Management.Automation.SwitchParameter>

Возвращает только скрытые файлы или каталоги (папки). По умолчанию Get-ChildItem получает только не скрытые элементы.

Параметр -Hidden появился в Windows PowerShell 3.0.

Чтобы получить только скрытые элементы, используйте -Hidden параметр, его h псевдонимы или ahскрытое-Attributes значение параметра. Чтобы исключить скрытые элементы, опустите -Hidden параметр или используйте -Attributes параметр .

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

ReadOnly <System.Management.Automation.SwitchParameter>

Извлекает только файлы или каталоги (папки), доступные для чтения.

Параметр -ReadOnly появился в Windows PowerShell 3.0.

Чтобы получить только элементы, доступные только для чтения, используйте -ReadOnly параметр, его ar псевдоним или значение -Attributesпараметра ReadOnly. Чтобы исключить элементы, доступные только для чтения, используйте -Attributes параметр .

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

System.Management.Automation.SwitchParameter <>

Извлекает только системные файлы или каталоги (папки).

Параметр -System появился в Windows PowerShell 3.0.

Чтобы получить только системные файлы и папки, используйте -System параметр, его as псевдоним или значение-Attributes System параметра. Чтобы исключить системные файлы и папки, используйте -Attributes параметр .

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

NewerThan <System.DateTime>

Возвращает $True , если LastWriteTime значение файла больше указанной даты. В противном случае она возвращает $False.

Введите объект DateTime , например объект, возвращаемый командлетом Get-Date , или строку, которую можно преобразовать в объект DateTime , например "August 10, 2011 2:00 PM".

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

OlderThan <System.DateTime>

Возвращает $True , если LastWriteTime значение файла меньше указанной даты. В противном случае она возвращает $False.

Введите объект DateTime , например объект, возвращаемый командлетом Get-Date , или строку, которую можно преобразовать в объект DateTime , например "August 10, 2011 2:00 PM".

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

<Stream System.String>

Управляет альтернативными потоками данных. Введите имя потока. Подстановочные знаки разрешены только в командах Get-Item для и Remove-Item на диске файловой системы.

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

Raw <SwitchParameter>

Игнорирует символы новой строки. Возвращает содержимое в виде одного элемента.

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

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

Строка ItemType <>

Этот параметр позволяет указать элемент для создания с помощью . New-Item

Доступные значения этого параметра зависят от текущего поставщика, который вы используете.

FileSystem На диске допускаются следующие значения:

  • Файл
  • Каталог
  • SymbolicLink
  • Соединение
  • HardLink

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

Использование конвейера

Командлеты поставщика принимают входные данные конвейера. Конвейер можно использовать для упрощения задачи, отправляя данные поставщика из одного командлета в другой. Дополнительные сведения об использовании конвейера с командлетами поставщика см. в справочниках по командлетам, приведенным в этой статье.

Получение справки

Начиная с Windows PowerShell 3.0, стали доступны настраиваемые разделы справки по командлетам поставщика, в которых объясняется поведение этих командлетов на диске файловой системы.

Чтобы получить разделы справки, настроенные для диска файловой системы, выполните команду Get-Help на диске файловой системы или используйте -Path параметр Get-Help , чтобы указать диск файловой системы.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

См. также раздел

about_Providers