Remove-Item
Usuwa określone elementy.
Składnia
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>]
Opis
Polecenie cmdlet Remove-Item
usuwa co najmniej jeden element.
Ponieważ jest on obsługiwany przez wielu dostawców, może usuwać wiele różnych typów elementów, w tym plików, folderów, kluczy rejestru, zmiennych, aliasów i funkcji.
Przykłady
Przykład 1. Usuwanie plików, które mają dowolne rozszerzenie nazwy pliku
To polecenie usuwa wszystkie pliki, które mają nazwy zawierające kropkę ('.') z folderu "C:\Test". Ponieważ polecenie określa kropkę, polecenie nie usuwa folderów ani plików, które nie mają rozszerzenia nazwy pliku.
Remove-Item C:\Test\*.*
Przykład 2. Usuwanie niektórych plików dokumentów w folderze
To polecenie usuwa z bieżącego folderu wszystkie pliki, które mają rozszerzenie nazwy pliku ".doc" i nazwę, która nie zawiera 1. Używa symbolu wieloznakowego ('*'), aby określić zawartość bieżącego folderu. Używa on parametrów Include i Exclude w celu określenia plików do usunięcia.
Remove-Item * -Include *.doc -Exclude *1*
Przykład 3. Usuwanie ukrytych, tylko do odczytu plików
To polecenie usuwa plik, który jest zarówno ukryty, jak i tylko do odczytu.
Do określenia pliku jest używany parametr ścieżka
Remove-Item -Path C:\Test\hidden-RO-file.txt -Force
Przykład 4. Rekursywne usuwanie plików w podfolderach
To polecenie usuwa wszystkie pliki CSV w bieżącym folderze i wszystkie podfoldery rekursywnie.
Ponieważ parametr Recurse w Remove-Item
ma znany problem, polecenie w tym przykładzie używa Get-ChildItem
do pobrania żądanych plików, a następnie używa operatora potoku do przekazania ich do Remove-Item
.
W poleceniu Get-ChildItem
Path ma wartość "*", która reprezentuje zawartość bieżącego folderu.
Używa Include do określenia typu pliku CSV i używa rekurse, aby rekursywne pobieranie.
Jeśli spróbujesz określić typ pliku, taki jak -Path *.csv
, polecenie cmdlet interpretuje temat wyszukiwania jako plik, który nie zawiera elementów podrzędnych, a rekurse zakończy się niepowodzeniem.
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
Przykład 5. Rekursywne usuwanie podkluczy
To polecenie usuwa klucz rejestru "OldApp" i wszystkie jego podklucze i wartości.
Używa Remove-Item
do usunięcia klucza.
Ścieżka jest określona, ale opcjonalna nazwa parametru (Ścieżka) zostanie pominięta.
Parametr Recurse usuwa całą zawartość klucza "OldApp" rekursywnie. Jeśli klucz zawiera podklucze i pominięto parametr Recurse, zostanie wyświetlony monit o potwierdzenie usunięcia zawartości klucza.
Remove-Item HKLM:\Software\MyCompany\OldApp -Recurse
Przykład 6. Usuwanie plików ze znakami specjalnymi
W poniższym przykładzie pokazano, jak usunąć pliki zawierające znaki specjalne, takie jak nawiasy lub nawiasy.
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
Przykład 7. Usuwanie alternatywnego strumienia danych
W tym przykładzie pokazano, jak użyć parametru dynamicznego strumienia polecenia cmdlet Remove-Item
w celu usunięcia alternatywnego strumienia danych. Parametr strumienia jest wprowadzany w programie Windows PowerShell 3.0.
Pierwsze polecenie używa Stream parametru dynamicznego polecenia cmdlet Get-Item
w celu pobrania strumienia Zone.Identifier pliku "Copy-Script.ps1".
Drugie polecenie używa parametru dynamicznego Stream polecenia cmdlet Remove-Item
w celu usunięcia strumienia Zone.Identifier pliku.
Trzecie polecenie używa
Czwarte polecenie Get-Item
polecenie cmdlet bez parametru Stream, aby sprawdzić, czy plik nie został usunięty.
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
+ [!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()]~~
+ CategoryInfo : ObjectNotFound: (C:\Test\Copy-Script.ps1:String) [Get-Item], FileNotFoundE
xception
+ FullyQualifiedErrorId : AlternateDataStreamNotFound,Microsoft.PowerShell.Commands.GetItemCommand
Get-Item C:\Test\Copy-Script.ps1
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 8/4/2011 11:15 AM 9436 Copy-Script.ps1
Parametry
-Confirm
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Credential
Nuta
Ten parametr nie jest obsługiwany przez żadnych dostawców zainstalowanych w programie PowerShell. Aby personifikować innego użytkownika lub podnieść poziom poświadczeń podczas uruchamiania tego polecenia cmdlet, użyj Invoke-Command.
Typ: | PSCredential |
Position: | Named |
Domyślna wartość: | Current user |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Exclude
Określa elementy pomijane przez to polecenie cmdlet. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Dozwolone są symbole wieloznaczne.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Filter
Określa filtr w formacie lub języku dostawcy. Wartość tego parametru kwalifikuje parametr Path.
Składnia filtru, w tym użycie symboli wieloznacznych, zależy od dostawcy. Filtry są wydajniejsze niż inne parametry, ponieważ dostawca stosuje je, gdy polecenie cmdlet pobiera obiekty zamiast filtrować obiekty po ich pobraniu.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Force
Wymusza usunięcie elementów, których nie można zmienić, takich jak ukryte lub tylko do odczytu pliki lub aliasy lub zmienne tylko do odczytu. Polecenie cmdlet nie może usunąć stałych aliasów ani zmiennych. Implementacja różni się od dostawcy do dostawcy. Aby uzyskać więcej informacji, zobacz about_Providers. Nawet przy użyciu parametru Force polecenie cmdlet nie może zastąpić ograniczeń zabezpieczeń.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Include
Określa elementy do usunięcia. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, taki jak "*.txt". Dozwolone są symbole wieloznaczne.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-LiteralPath
Określa ścieżkę usuwanych elementów. W przeciwieństwie do parametru Path wartość LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Typ: | String[] |
Aliasy: | PSPath |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Path
Określa ścieżkę usuwanych elementów. Dozwolone są symbole wieloznaczne.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | True |
-Recurse
Wskazuje, że to polecenie cmdlet usuwa elementy w określonych lokalizacjach i we wszystkich elementach podrzędnych lokalizacji.
Jeśli jest używany z parametrem Include, parametr Recurse może nie usuwać wszystkich podfolderów ani wszystkich elementów podrzędnych.
Jest to znany problem.
Aby obejść ten problem, spróbuj wykonać potokowanie wyników polecenia Get-ChildItem -Recurse
, aby Remove-Item
, zgodnie z opisem w sekcji "Przykład 4" w tym temacie.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Stream
Parametr strumienia
Możesz użyć Remove-Item
do usunięcia alternatywnego strumienia danych.
Jednak nie jest to zalecany sposób wyeliminowania kontroli zabezpieczeń, które blokują pliki pobierane z Internetu.
Jeśli sprawdzisz, czy pobrany plik jest bezpieczny, użyj polecenia cmdlet Unblock-File
.
Ten parametr został wprowadzony w programie Windows PowerShell 3.0.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-UseTransaction
Zawiera polecenie w aktywnej transakcji. Ten parametr jest prawidłowy tylko wtedy, gdy transakcja jest w toku. Aby uzyskać więcej informacji, zobacz about_Transactions
Typ: | SwitchParameter |
Aliasy: | usetx |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie jest uruchamiane.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać ciąg zawierający ścieżkę, ale nie ścieżkę literału.
Dane wyjściowe
None
To polecenie cmdlet nie zwraca żadnych danych wyjściowych.
Uwagi
Polecenie cmdlet Remove-Item
jest przeznaczone do pracy z danymi udostępnianymi przez dowolnego dostawcę. Aby wyświetlić listę dostawców dostępnych w sesji, wpisz Get-PsProvider
. Aby uzyskać więcej informacji, zobacz about_Providers.