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
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-DeleteKey]
[<CommonParameters>]
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-DeleteKey]
[<CommonParameters>]
Remove-Item
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
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
Для указания файла используется параметр Path . Для удаления используется параметр Force . Без force вы не сможете удалить файлы только для чтения или скрытые файлы.
Пример 4. Рекурсивное удаление файлов во вложенных папках
Эта команда рекурсивно удаляет все CSV-файлы в текущей папке и все вложенные папки.
Так как параметр Recurse в имеет Remove-Item
известную проблему, команда в этом примере использует Get-ChildItem
для получения нужных файлов, а затем использует оператор конвейера для их передачи в Remove-Item
.
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
В команде Get-ChildItem
Path имеет значение (*
), которое представляет содержимое текущей папки. Он использует 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-Item
Stream получает 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 |
-DeleteKey
Это динамический параметр, доступный поставщиком сертификатов . Поставщик сертификатов и этот параметр доступны только на платформах Windows.
При указании командлет удаляет закрытый ключ при удалении сертификата.
Дополнительные сведения см. в разделе about_Certificate_Provider.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
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
Это динамический параметр, доступный поставщиком FileSystem . Этот параметр доступен только в Windows. Этот параметр нельзя использовать в сочетании с параметром Recurse .
Можно использовать для Remove-Item
удаления альтернативного потока данных, например Zone.Identifier
.
Однако это не рекомендуемый способ устранения проверок безопасности, которые блокируют файлы, скачанные из Интернета. Если вы убедитесь, что скачанный файл является безопасным, используйте Unblock-File
командлет .
Этот параметр впервые появился в Windows PowerShell 3.0. Начиная с Windows PowerShell 7.2, Remove-Item
можно удалять альтернативные потоки данных из каталогов и файлов.
Дополнительные сведения см. в разделе about_FileSystem_Provider.
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 |
Входные данные
Вы можете передать строку, содержащую путь, но не литеральный путь, в этот командлет.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
PowerShell включает следующие псевдонимы для Remove-Item
:
- Для всех платформ.
del
erase
rd
ri
- Windows:
rm
rmdir
Командлет Remove-Item
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PsProvider
. Дополнительные сведения см. в разделе about_Providers.
При попытке удалить папку, содержащую элементы, без использования параметра Recurse командлет запрашивает подтверждение. При использовании -Confirm:$false
запрос не подавляется. Это сделано намеренно.