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


Remove-Item

Удаляет указанные элементы.

Синтаксис

Remove-Item
      [-Path] <String[]>
      [-Filter <String>]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-Recurse]
      [-Force]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm]
      [-Stream <String[]>]
      [<CommonParameters>]
Remove-Item
      -LiteralPath <String[]>
      [-Filter <String>]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-Recurse]
      [-Force]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm]
      [-Stream <String[]>]
      [<CommonParameters>]

Описание

Командлет Remove-Item удаляет один или несколько элементов. Так как он поддерживается многими поставщиками, он может удалять различные типы элементов, включая файлы, папки, разделы реестра, переменные, псевдонимы и функции.

Примеры

Пример 1. Удаление файлов с любым расширением имени файла

В этом примере удаляются все файлы с именами, включающими точку C:\Test (.), из папки. Так как команда задает точку, команда не удаляет папки или файлы без расширения имени файла.

Remove-Item C:\Test\*.*

Пример 2. Удаление некоторых файлов документов в папке

В этом примере из текущей папки удаляются все файлы с расширением .doc имени файла и именем, не включающими *1*.

Remove-Item * -Include *.doc -Exclude *1*

Для указания содержимого текущей папки используется подстановочный знак (*). Для указания удаляемого файла используются параметры Include и Exclude .

Пример 3. Удаление скрытых файлов, доступных только для чтения

Эта команда удаляет файл, который является как скрытым , так и только для чтения.

Remove-Item -Path C:\Test\hidden-RO-file.txt -Force

Для указания файла используется параметр Path . Для удаления используется параметр Force . Без force невозможно удалить файлы , доступные только для чтения или скрытые .

Пример 4. Рекурсивное удаление файлов во вложенных папках

Эта команда рекурсивно удаляет все CSV-файлы в текущей папке и все вложенные папки.

Так как параметр Recurse в имеет Remove-Item известную проблему, команда в этом примере использует Get-ChildItem для получения нужных файлов, а затем использует оператор конвейера для их передачи в Remove-Item.

Get-ChildItem * -Include *.csv -Recurse | Remove-Item

В команде Get-ChildItemPath имеет значение (*), которое представляет содержимое текущей папки. Он использует Include , чтобы указать тип CSV-файла, и recurse, чтобы сделать извлечение рекурсивным. При попытке указать путь к типу файла, например -Path *.csv, командлет интерпретирует тему поиска как файл, не имеющий дочерних элементов, и recurse завершается ошибкой .

Примечание

Это поведение было исправлено в Windows версий 1909 и более поздних версий.

Пример 5. Рекурсивное удаление подразделов

Эта команда удаляет раздел реестра OldApp и все его подразделы и значения. Он использует Remove-Item для удаления ключа. Указан путь, но необязательное имя параметра (Path) опущено.

Параметр Recurse рекурсивно удаляет все содержимое ключа OldApp. Если ключ содержит подразделы и параметр Recurse пропущен, вам будет предложено подтвердить удаление содержимого ключа.

Remove-Item HKLM:\Software\MyCompany\OldApp -Recurse

Пример 6. Удаление файлов со специальными символами

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

Get-ChildItem

Directory: C:\temp\Downloads

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a---          6/1/2018  12:19 PM           1362 myFile.txt
-a---          6/1/2018  12:30 PM           1132 myFile[1].txt
-a---          6/1/2018  12:19 PM           1283 myFile[2].txt
-a---          6/1/2018  12:19 PM           1432 myFile[3].txt

Get-ChildItem | Where-Object Name -Like '*`[*'

Directory: C:\temp\Downloads

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a---          6/1/2018  12:30 PM           1132 myFile[1].txt
-a---          6/1/2018  12:19 PM           1283 myFile[2].txt
-a---          6/1/2018  12:19 PM           1432 myFile[3].txt

Get-ChildItem | Where-Object Name -Like '*`[*' | ForEach-Object { Remove-Item -LiteralPath $_.Name }
Get-ChildItem

Directory: C:\temp\Downloads

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a---          6/1/2018  12:19 PM           1362 myFile.txt

Пример 7. Удаление альтернативного потока данных

В этом примере показано, как использовать динамический параметр Stream командлета Remove-Item для удаления альтернативного потока данных. Параметр stream появился в Windows PowerShell 3.0.

Get-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier

FileName: \\C:\Test\Copy-Script.ps1

Stream                   Length
------                   ------
Zone.Identifier              26

Remove-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier
Get-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier

Get-Item : Could not open alternate data stream 'Zone.Identifier' of file 'C:\Test\Copy-Script.ps1'.

Параметр Get-ItemStream получает Zone.Identifier поток Copy-Script.ps1 файла. Remove-Itemиспользует параметр Stream для удаления Zone.Identifier потока файла. Наконец, Get-Item командлет показывает, что Zone.Identifier поток был удален.

Параметры

-Confirm

Запрос подтверждения перед выполнением командлета. Дополнительные сведения см. в следующих статьях:

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Примечание

Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить уровень учетных данных при выполнении этого командлета, используйте Invoke-Command.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

Указывает в качестве массива строк элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Можно использовать подстановочные знаки. Параметр Exclude действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое C:\Windows каталога.

При использовании recurse с exclude, Exclude фильтрует только результаты текущего каталога. Если во вложенных папках есть файлы, соответствующие шаблону Исключения , эти файлы удаляются вместе с родительским каталогом.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Указывает фильтр для указания параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, который поддерживает использование фильтров. Синтаксис языка фильтра FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты PowerShell после их извлечения.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

Заставляет командлет удалять элементы, которые невозможно изменить иным способом, например скрытые или доступные только для чтения файлы, псевдонимы или переменные только для чтения. С помощью этого командлета нельзя удалять постоянные псевдонимы или переменные. Применение этого параметра зависит от конкретного поставщика. Дополнительные сведения см. в разделе about_Providers. Даже с помощью параметра Force командлет не может переопределить ограничения безопасности.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Указывает в качестве массива строк элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt". Можно использовать подстановочные знаки. Параметр Include действует только в том случае, если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое C:\Windows каталога.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки предписывают PowerShell не интерпретировать какие-либо символы как escape-последовательности.

Дополнительные сведения см. в разделе about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Указывает путь к удаляемым элементам. Можно использовать подстановочные знаки.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Recurse

Указывает, что этот командлет удаляет элементы в указанных расположениях и во всех дочерних элементах этих расположений.

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

Примечание

Это поведение было исправлено в Windows версии 1909 и более поздних.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Stream

Примечание

Этот параметр доступен только в Windows.

Параметр Stream является динамическим параметром, который поставщик FileSystem добавляет в Remove-Item. Этот параметр работает только на дисках с файловой системой.

Можно использовать для Remove-Item удаления альтернативного потока данных, например Zone.Identifier. Однако не рекомендуется отменять проверки безопасности, которые блокируют файлы, загруженные из Интернета. Если вы убедитесь, что скачанный файл является безопасным, используйте Unblock-File командлет .

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

String

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

Выходные данные

None

Этот командлет не возвращает никакие выходные данные.

Примечания

Командлет Remove-Item предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PsProvider. Дополнительные сведения см. в разделе about_Providers.

При попытке удалить папку, содержащую элементы, без использования параметра Recurse командлет запрашивает подтверждение. При использовании -Confirm:$false запрос не подавляется. Это сделано намеренно.