Remove-Item to podstawowe polecenie PowerShell do usuwania elementów. I to nie tylko plików — bo PowerShell pracuje na „dostawcach” (providers), więc tym samym poleceniem skasujesz plik, cały katalog, klucz rejestru, zmienną środowiskową czy alias. Pod spodem masz aliasy rm, del, erase i rd, dzięki czemu nawyki z cmd i Linuksa częściowo działają, ale to wciąż jest Remove-Item z własnymi parametrami.
Składnia i najważniejsze opcje
Podstawowa forma to Remove-Item [-Path] . Parametr -Path jest pozycyjny, więc zwykle piszesz samą ścieżkę.
-Path— ścieżka (lub kilka, oddzielone przecinkami) do usunięcia; obsługuje symbole wieloznaczne jak*.-LiteralPath— ścieżka brana dosłownie, bez interpretacji*czy[ ]. Ratuje, gdy nazwa pliku zawiera nawiasy.-Recurse— usuwa katalog wraz z całą zawartością i podkatalogami.-Force— kasuje elementy ukryte, tylko-do-odczytu i systemowe; tłumi część pytań.-Include/-Exclude— filtruje elementy po wzorcu (np.*.log), działa razem z wieloznacznym-Path.-Filter— szybszy filtr realizowany przez providera, ale tylko jeden wzorzec.-WhatIf— pokazuje, co zostałoby usunięte, nic nie kasując. Twoje koło ratunkowe.-Confirm— wymusza potwierdzenie przed każdym usunięciem.
Przykłady użycia
Remove-Item .\raport.txt— usuwa pojedynczy plik z bieżącego katalogu.Remove-Item .\logi -Recurse -Force— kasuje cały folderlogiz zawartością, bez pytań i wraz z plikami tylko-do-odczytu.Remove-Item *.tmp— usuwa wszystkie pliki.tmpw bieżącym katalogu.Remove-Item .\cache -Recurse -WhatIf— pokazuje listę tego, co poleciałoby do kosza działań, ale niczego nie usuwa (test na sucho).Remove-Item HKCU:\Software\MojaApka -Recurse— usuwa klucz rejestru wraz z podkluczami (PowerShell traktuje rejestr jak dysk).
Częste błędy i pułapki
Nie ma kosza. Remove-Item kasuje na trwałe, nie wrzuca do Kosza systemowego. Skasowane = skasowane, więc -WhatIf przed groźnym -Recurse to nie przesada.
Klasyczna kombinacja-mina: -Recurse razem z -Include potrafi nie działać tak, jak myślisz — filtr nie zawsze schodzi w głąb podkatalogów. Zamiast tego pewniej zadziała Get-ChildItem -Recurse -Include *.log | Remove-Item.
Plik zablokowany przez proces rzuci błędem nawet z -Force — najpierw zamknij program, który go trzyma. -Force obchodzi atrybuty, nie blokady systemu.
Uważaj na rm z nawykami z basha. To alias, nie to samo narzędzie — flagi w stylu rm -rf nie istnieją; tu masz -Recurse -Force.
Powiązane komendy: Get-ChildItem (listowanie przed usunięciem), New-Item (tworzenie), Move-Item, Copy-Item oraz Clear-Item (czyści zawartość, nie usuwa samego elementu).