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


Remove-Item

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

Синтаксис

Path (Default) - FileSystem provider

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

LiteralPath - FileSystem provider

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

Path (Default) - Certificate provider

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

LiteralPath - Certificate provider

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

Path (Default) - All providers

Remove-Item
    [-Path] <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-Recurse]
    [-Force]
    [-Credential <pscredential>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

LiteralPath - All providers

Remove-Item
    -LiteralPath <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-Recurse]
    [-Force]
    [-Credential <pscredential>]
    [-WhatIf]
    [-Confirm]
    [<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

Параметр пути используется для указания файла. Он использует параметр Force для его удаления. Без Forceневозможно удалить только для чтения или скрытые файлы.

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

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

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

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

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

Замечание

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

Пример 5. Рекурсивно удалите вложенные ключи

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

Параметр 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 Stream командлета Remove-Item для удаления альтернативного потока данных. Параметр потока представлен в 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'.

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

Параметры

-Confirm

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:cf

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Credential

Замечание

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

Свойства параметра

Тип:PSCredential
Default value:Current user
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-DeleteKey

Это динамический параметр, доступный поставщиком сертификатов . Поставщик сертификата и этот параметр доступны только на платформах Windows.

Когда это указано, командлет удаляет закрытый ключ при удалении сертификата.

Для получения дополнительной информации см. about_Certificate_Provider.

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Exclude

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

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

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Filter

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

Свойства параметра

Тип:String
Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Force

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Include

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

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-LiteralPath

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

Дополнительную информацию см. в разделе about_Quoting_Rules.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:PSPath, LP

Наборы параметров

LiteralPath
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Path

Указывает путь к удаленным элементам. Разрешено использование подстановочных символов.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

Path
Position:0
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Recurse

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

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

Замечание

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

Свойства параметра

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Stream

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

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

Этот параметр появился в Windows PowerShell 3.0. По состоянию на Windows PowerShell 7.2 Remove-Item могут удалять альтернативные потоки данных из каталогов, а также файлов.

Дополнительные сведения см. в about_FileSystem_Provider.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-WhatIf

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:wi

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

String

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

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

None

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

Примечания

PowerShell включает следующие псевдонимы для Remove-Item:

  • Все платформы:
    • del
    • erase
    • rd
    • ri
  • Виндоус:
    • rm
    • rmdir

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

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