Remove-Item

Usuwa element: plik, katalog lub klucz rejestru.

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] [-Recurse] [-Force]. 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 folder logi z zawartością, bez pytań i wraz z plikami tylko-do-odczytu.
  • Remove-Item *.tmp — usuwa wszystkie pliki .tmp w 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).