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-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 |
-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 |
Входные данные
Вы можете передать строку, содержащую путь, но не литеральный путь, в этот командлет.
Выходные данные
None
Этот командлет не возвращает никакие выходные данные.
Примечания
Командлет Remove-Item
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PsProvider
. Дополнительные сведения см. в разделе about_Providers.
При попытке удалить папку, содержащую элементы, без использования параметра Recurse командлет запрашивает подтверждение. При использовании -Confirm:$false
запрос не подавляется. Это сделано намеренно.