Remove-Item
Удаляет указанные элементы.
Синтаксис
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-Stream <String[]>]
[<CommonParameters>]
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-Stream <String[]>]
[<CommonParameters>]
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-DeleteKey] <CommonParameters>]
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-DeleteKey]
[<CommonParameters>]
Remove-Item
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Remove-Item
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Описание
Командлет Remove-Item
удаляет один или несколько элементов. Так как она поддерживается многими поставщиками, она может удалять различные типы элементов, включая файлы, папки, разделы реестра, переменные, псевдонимы и функции.
Примеры
Пример 1. Удаление файлов с любым расширением файла
В этом примере удаляются все файлы с именами, включающими точку (.
) из C:\Test
папки.
Так как команда задает точку, команда не удаляет папки или файлы, у которых нет расширения файла.
Remove-Item C:\Test\*.*
Пример 2. Удаление файлов документов в папке
В этом примере удаляются из текущей папки все файлы, имеющие .doc
расширение файла и имя, которое не содержит *1*
.
Remove-Item * -Include *.doc -Exclude *1*
Он использует подстановочный знак (*
) для указания содержимого текущей папки. Он использует параметры включения и исключения , чтобы указать файлы для удаления.
Пример 3. Удаление скрытых, доступных только для чтения файлов
Эта команда удаляет файл, который как скрытый, так и доступный только для чтения.
Remove-Item -Path C:\Test\hidden-RO-file.txt -Force
Он использует параметр Path для указания файла. Он использует параметр 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
, командлет интерпретирует тему поиска как файл без дочерних элементов, а рекурс завершается ошибкой .
Примечание.
Это поведение было исправлено в 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
потока данных. Параметр потока представлен в 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'.
At line:1 char:1
+ Get-Item 'C:\Test\Copy-Script.ps1' -Stream Zone.Identifier
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Test\Copy-Script.ps1:String) [Get-Item], FileNotFoundException
+ FullyQualifiedErrorId : AlternateDataStreamNotFound,Microsoft.PowerShell.Commands.GetItemCommand
Параметр Get-Item
Stream получает Zone.Identifier
поток Copy-Script.ps1
файла. Remove-Item
использует параметр Stream для удаления Zone.Identifier
потока файла. Наконец, командлет показывает, Get-Item
что Zone.Identifier
поток был удален.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета. Дополнительные сведения см. в следующих статьях:
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Credential
Примечание.
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Чтобы олицетворить другого пользователя или повысить свои учетные данные при выполнении этого командлета, используйте Invoke-Command.
Тип: | PSCredential |
Position: | Named |
Default value: | Current user |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-DeleteKey
Это динамический параметр, доступный поставщиком сертификатов . Поставщик сертификатов и этот параметр доступны только на платформах Windows.
При условии командлет удаляет закрытый ключ при удалении сертификата.
Дополнительные сведения см. в about_Certificate_Provider.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Exclude
Указывает как строковый массив, элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt
. Можно использовать подстановочные знаки. Параметр Exclude действует только в том случае, если команда включает содержимое элемента, напримерC:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
При использовании recurse с исключением исключить только результаты текущего каталога. Если в вложенных папках есть файлы, соответствующие шаблону исключения , эти файлы удаляются вместе с родительским каталогом.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Filter
Указывает фильтр для квалификации параметра Path . Поставщик FileSystem — единственный установленный поставщик PowerShell, поддерживающий использование фильтров. Синтаксис языка фильтра FileSystem можно найти в about_Wildcards. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их, когда командлет получает объекты, а не фильтрует объекты после их получения.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Force
Позволяет командлету удалять элементы, которые не могут быть изменены, например скрытые или доступные только для чтения файлы или псевдонимы только для чтения или переменные. Командлет не может удалить псевдонимы констант или переменные. Применение этого параметра зависит от конкретного поставщика. Дополнительные сведения см. в about_Providers. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Include
Указывает, как строковый массив, элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например "*.txt"
. Можно использовать подстановочные знаки. Параметр Include действует только в том случае, если команда содержит содержимое элемента, например C:\Windows\*
, где подстановочный знак указывает содержимое C:\Windows
каталога.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно типизированно. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Дополнительные сведения см. в about_Quoting_Rules.
Тип: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Path
Указывает путь к удаленным элементам. Можно использовать подстановочные знаки.
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-Recurse
Указывает, что этот командлет удаляет элементы в указанных расположениях и во всех дочерних элементах расположений.
Параметр Recurse может не удалять все вложенные папки или все дочерние элементы. Это известная проблема.
Примечание.
Это поведение было исправлено в Версиях Windows 1909 и более поздних версиях.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Stream
Это динамический параметр, доступный поставщиком FileSystem . Этот параметр доступен только в Windows. Этот параметр нельзя использовать в сочетании с параметром Recurse .
Можно использовать Remove-Item
для удаления альтернативного потока данных, например Zone.Identifier
.
Однако это не рекомендуется для устранения проверок безопасности, которые блокируют файлы, скачанные из Интернета. Если вы убедитесь, что скачанный файл является безопасным, используйте Unblock-File
командлет.
Этот параметр впервые появился в Windows PowerShell 3.0.
Дополнительные сведения см. в about_FileSystem_Provider.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-UseTransaction
Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в about_Transactions
Тип: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Можно передать строку, содержащую путь, но не литеральный путь к этому командлету.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
Windows PowerShell включает следующие псевдонимы для Remove-Item
:
del
erase
rd
ri
rm
rmdir
Командлет Remove-Item
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PsProvider
. Дополнительные сведения см. в about_Providers.
При попытке удалить папку, содержащую элементы без использования параметра Recurse , командлет запрашивает подтверждение. Использование -Confirm:$false
не подавляет запрос. Это сделано намеренно.
Связанные ссылки
PowerShell