Jak odstranit složky nebo soubory pomocí PowerShellu

18. srpna 2021 10262 Pohledy Jak odstranit složky nebo soubory pomocí PowerShellu

Chcete odstranit soubory a složky pomocí PowerShellu, ale nevíte jak? Tento článek vám poskytne podrobný návod, jak pomocí PowerShellu odstranit složku, soubor nebo všechny složky a soubory v zadané cestě.

Tento blogový příspěvek vás naučí různé způsoby, jak odstranit složky a soubory pomocí PowerShellu. Pokud to zní zajímavě, čtěte dál!

Průvodce začíná vysvětlením 2 způsobů, jak pomocí PowerShellu odstranit složky a soubory. Poté se ve druhé části dozvíte, jak opravit běžné chyby spojené s mazáním souborů a složek pomocí PowerShellu.

Nakonec průvodce obsahuje více než 20 příkladů.

Procházet témata příspěvků

2 způsoby, jak odstranit složku nebo soubor pomocí prostředí PowerShell

PowerShell nabízí dva způsoby odstranění položek. Složku nebo soubor můžete odstranit pomocí metody odstranění PowerShell.

Za druhé, můžete použít Remove-Item k odstranění položek v PowerShellu. V dalších 2 podsekcích této části se dozvíte, jak tyto metody používat.

Metoda 1: Použijte Powershell Vymazat() Metoda odstranění složky nebo souboru

Aby PowerShell mohl odstranit složku, potřebujete rutinu Get-ChidItem. Get-ChildItem Rutina vrátí položky a podřízené položky v určeném umístění.

Chcete-li zobrazit seznam všech souborů a složek v cestě E: hlásí , spusťte příkaz níže:

|_+_|

Zde je výsledek v PowerShellu…

Jak používat Powershell Delete()

Tento příkaz má nazvanou metodu Vymazat . Můžete použít Vymazat Metoda odstranění složek a souborů.

Chcete-li zobrazit dostupné metody ve výše uvedeném příkazu, přesuňte tento příkaz do rutiny Get-Member.

|_+_|

Příkaz vrátil dva typy vlastností. jeden , System.IO.DirectoryInfo (viz první obrázek níže). dva , System.IO.FileInfo . První se týká složek v cestě, zatímco druhý se týká souborů.

Podívejte se pozorně na dva obrázky. Všimněte si, že každý z nich má nazvanou metodu Vymazat . Můžete použít Vymazat Metoda v PowerShellu k odstranění složky nebo souboru.

V další podsekci ukážu, jak používat Vymazat Metoda.

Jak používat Vymazat () Metoda v Powershell k odstranění složky nebo souboru

Syntaxe Vymazat Metoda je:

|_+_|

Objekt je složka podrobností o souboru vrácená rutinou Get-ChidItem. dále Vymazat je metoda obvykle následovaná operátorem ().

Aby bylo snadné porozumět výše uvedenému příkazu syntaxe, zde je původní příkaz Get-ChildItem:

|_+_|

a výsledek…

Jak používat Powershell Delete()

Na základě toho, co jsem dosud vysvětlil, můžete teoreticky použít metodu PowerShell Delete Method k odstranění složky nazvané sestavy spuštěním příkazu níže:

|_+_|

Poslední příkaz však vrátí chybovou zprávu Adresář není prázdný.

K vyřešení tohoto problému potřebuji příkaz, který vrátí všechny soubory a složky a podsložky v cestě. Pak musím výsledek převést do smyčky aForEach .

Zde je upravený příkaz:

|_+_|

Zde je příkaz v PowerShellu. Všechny soubory byly smazány ze zadané cesty.

Poslední příkaz odstraní soubory v zadané složce a jejích podsložkách. Neodstraní však složky.

Chcete-li odstranit složky, spusťte příkaz níže:

|_+_|

Abych to potvrdil E: hlásí je nyní prázdné, znovu spustím příkaz Get-ChildItem.

|_+_|

Nic to nevrací!

Než přejdu k další části, dovolte mi vysvětlit, jak tento příkaz odstranil všechny soubory a podsložky.

|_+_|

Get-ChildItem má dva parametry nazývané Zahrnout a Rekurze . V příkazu jsem použil -Zahrnout *.* říct PowerShellu, aby do výsledku zahrnul každý soubor.

Rekurze , na druhé straně říká Get-ChildItem, aby vrátil všechny složky a podsložky.

Ve druhé části příkazu jsem připojil Get-ChildItem na příkaz ForEach . ForEach prochází všechny objekty vrácené Get-ChildItem a používá Vymazat Způsob jejich odstranění.

Jak jsem již zmínil, když jsem zaváděl tuto sekci, PowerShell má nazvaný cmdlet Odebrat položku konkrétně. Tuto rutinu prostředí PowerShell můžete také použít k odstranění složky nebo souboru.

Další část popisuje, jak používat Odebrat položku . Podle mých zkušeností použití Odebrat položku je lepší než používat Vymazat() Metoda.

Metoda 2: Použijte Powershell Odebrat položku Rutina pro odstranění složky nebo souboru

Chcete-li odstranit soubor nebo složku pomocí Odebrat položku stále musíte použít rutinu PowerShell, Get-ChildItem. Pak výsledek do Odebrat položku .

Můžete běžet Odebrat položku bez Get-ChildItem . Z mé zkušenosti však pro většinu okolností funguje nejlépe uvést položku s Get-ChildItem . Poté připojte výstup do Odebrat položku .

V mém prvním příkladu v této části chci použít PowerShell k odstranění složky s názvem ITGServer2. Viz snímek obrazovky níže.

Metoda 2: Použití rutiny odebrat položku Powershell k odstranění složky nebo souboru

Zde je příkaz PowerShell, který smaže složku…

|_+_|

Po spuštění výše uvedeného příkazu je složka pryč!

Metoda 2: Použití rutiny odebrat položku Powershell k odstranění složky nebo souboru

V mém druhém příkladu chci odstranit složky a podsložky v E: eports. Níže uvedený příkaz udělá práci…

|_+_|

Po spuštění posledního příkazu jsou všechny složky v zadané složce pryč!

Metoda 2: Použití rutiny odebrat položku Powershell k odstranění složky nebo souboru

Jak opravit běžné chyby pomocí Powershell odstranit složku nebo soubor

Jak opravit běžné chyby pomocí Powershell odstranit složku nebo soubor

Když spustíte příkaz Remove-Item PowerShell k odstranění složky nebo souboru, může to vrátit některé chyby. Tato část popisuje některé z těchto chyb a jak je opravit.

Mám pocit, že je lepší prodiskutovat řešení těchto běžných chyb, než se ponoříme do některých skutečných příkladů správce systému, jak používat PowerShell k odstranění složek nebo souborů.

Jak opravit chybu odepření přístupu ke složce nebo souboru v Powershell

Pokud spustíte Remove-Item za účelem odstranění souboru nebo složky a zobrazí se chybová zpráva Access Denied, zkuste následující:

  1. Změna vlastníka souboru nebo složky – pomocí níže uvedených kódů změňte vlastníka souboru nebo složky na místního správce

Chcete-li spustit tento příkaz, otevřete PowerShell jako správce, jinak se poslední příkaz nezdaří.

|_+_| Změňte cestu ke složce F:ITGFilesTextfiles na úplnou cestu k vašemu souboru nebo složce

Jakmile změníte vlastníka na místního správce, zkuste znovu spustit odstranění souboru nebo složky pomocí PowerShellu. Pokud to nefunguje, zkuste tyto opravy.

  1. Přidat Platnost parametr na Remove-Item
  2. Zkuste místo toho metodu Delete(). Pokud nevíte, jak používat metodu PowerShell Delete(), přečtěte si část Jak používat metodu Delete() v Powershell k odstranění složky nebo souboru (odkaz se otevře na jiné kartě prohlížeče) této příručky.

Jak opravit Powershell Delete Folder nelze odebrat, protože není prázdná

Pokud příjem nelze odstranit, protože to není prázdné, chyba při spuštění příkazu:

|_+_|

Zkuste použít Get-ChildItem s parametrem Recurse. Poté jej pomocí potrubí odeberte do položky Remove-Item Platnost a Rekurze parametry.

Zde je ukázkový příkaz:

|_+_|

Případně můžete spustit Get-ChildItem a zadat hvězdičky za posledním lomítkem v cestě. Tím se odstraní veškerý obsah složky.

Například, když spustím příkaz…

|_+_|

…a obdržím Nelze odebrat, protože není prázdný, k vyřešení problému nejprve spustím níže uvedený příkaz:

|_+_|

Poslední příkaz smaže pouze položky v E: eports. Nakonec, abych smazal složku (která je nyní prázdná), spustím příkaz níže…

|_+_|

Jak opravit chybu Powershell Delete Folder používanou jiným procesem

Jak opravit Powershell Delete Folder

Pokud se zobrazí zpráva Remove-Item vrátí chybovou zprávu, protože ji používá jiný proces, musíte zahrnout parametr Force.

Zde je originál, který vrátil chybovou zprávu…

|_+_|

Chcete-li tento problém vyřešit, spusťte níže uvedený příkaz pro soubor:

|_+_|

Poslední příkaz úspěšně smazal soubor…

Jak opravit chybu Powershell Delete Folder Or File Folder or File Name too long

Zdá se, že jde o známé omezení PowerShellu.

Chcete-li však tento problém vyřešit, můžete použít tobě příkaz cmd. Potom výsledek přesuňte do příkazu Odebrat položku.

Zde je příklad…

|_+_| Příkaz dir je ekvivalent cmd Get-ChildItem PowerShellu.

Jak opravit chybu Powershell Delete Folder Access to the Path Is Denied

Příkaz PowerShell Remove-Item vyvolá chybovou zprávu Access to The Path Is Denied, pokud se pokusíte odstranit složku, ke které nemáte oprávnění.

Důvodem zobrazení této chybové zprávy je, že nemáte přístup ke složce. Než spustíte příkaz Odebrat položku, spusťte následující příkazy, které udělí místním správcům přístup ke složce.

Tato oprava předpokládá, že účet, který jste použili k přihlášení, je členem místní skupiny Administrators. Před spuštěním příkazu níže v PowerShell ISE změňte cestu F:ITGFilesTextfiles na cestu ke složce, kterou se pokoušíte odstranit. |_+_|

Po dokončení výše uvedeného skriptu spusťte znovu příkaz Remove-Item.

Další příklady Powershell pro odstranění složky nebo souboru

Další příklady Powershell pro odstranění složky nebo souboru

Tato poslední část průvodce obsahuje několik příkladů použití PowerShellu k odstranění souborů nebo složek.

Jak odstranit složku nebo soubor pomocí PowerShell, pokud existuje

Protože tento příklad má podmínku – pokud složka nebo soubor existuje – první cesta příkazu zkontroluje, zda položka existuje.

Můžete použít Testovací cesta příkaz ke kontrole, zda složka nebo soubor existuje. Potom použijte podmíněný příkaz IF k odebrání složky nebo souboru, pokud existuje.

Oba příkazy můžeme kombinovat v bloku příkazů IF…

V tomto příkladu chci odstranit složku s názvem ITGServer v cestě F:ITGFilesTextfiles – pokud složka existuje.

Zde je příkaz…

|_+_|

V tomto příkladu tato složka existuje, takže byla odstraněna. Pokud však příkaz zkusíme se souborem, který neexistuje, obdržíme zprávu v Jiný bloku příkazu IF.

Jak odstranit složku a její podsložky pomocí prostředí PowerShell

Chcete-li odstranit složku a všechny podsložky, spusťte Odebrat položku příkaz s Rekurze a Platnost parametry.

Zde je příklad…

|_+_|

Jak odstranit složku nebo soubor starší než x dní (nebo na základě data) pomocí prostředí PowerShell

V tomto příkladu, protože chceme smazat soubory nebo složky starší než x dní, je prvním krokem získání odkazu na dny. To se provádí pomocí příkazu Get-Date.

Protože však chceme smazat položky starší než x dní, musíme zadat x dní jako zápornou hodnotu. Chcete-li například odstranit všechny soubory nebo složky starší než 7 dní, získejte odkaz na dny pomocí příkazu níže:

|_+_|

Poté použijte Get-ChildItem příkaz k získání LastWriteTime vlastnost položky. The LastWriteTime vlastnosti zaznamenává datum poslední změny složky nebo souboru.

Navíc k LastWriteTime vlastnost, vrátí příkaz Get-ChildItem jinou vlastnost s názvem PSIsContainer . Vlastnost PSIsContainer odlišuje soubor od složky.

Li PSIsContainer je true, znamená to, že položka je složka. Na druhou stranu, pokud PSIsContainer je false, znamená to, že položka je soubor.

Než představím vlastnost LastWriteTime, dovolte mi nejprve spustit příkaz Get-ChildItem a filtrovat podle vlastnosti PSIsContainer:

|_+_|

Tento příkaz vrátil jeden volaný objekt ITG protože toto je jediná složka v cestě F:ITGFilesTextfiles.

Chcete-li zobrazit pouze soubory v cestě, spusťte příkaz níže:

|_+_|

Tentokrát, protože jsem specifikoval podle $ _. PSIsConta sestupuje -eq $FALSE , PowerShell vrátí všechny nesložky.

Nyní, když víte, jak vypsat seznam složek nebo souborů ve složce, představíme vlastnost LastWriteTime. Jak jsem již zmínil, poslední datum a čas, kdy byla položka změněna, jsou zaznamenány ve vlastnosti LastWriteTime.

Tyto příkazy zahrnují vlastnost LastWriteTime:

|_+_|

První příkaz vrátí všechny složky, které byly naposledy změněny před referenčním dnem uloženým v proměnné $DaysRef. V tomto příkladu je referenční den 7 dní.

Naopak druhý příkaz vrátí všechny soubory upravené za posledních x dní – kde x dní se v tomto příkladu rovná 7.

Druhou a poslední fází tohoto příkladu, která používá PowerShell k odstranění složek souborů starších než x dní, je přesměrování příkazu Where-Object do Remove-Item.

Skript níže dokončí úlohu smazání souborů a složek…

|_+_| Pokud žádný soubor nebo složka nesplňuje kritéria LastWriteTime, žádný nebude odstraněn.

Jak používat PowerShell k odstranění pouze obsahu složky

V tomto příkladu odstraním obsah složky F:ITGFilesfolder, ale ne samotnou složku.

Pokud chcete odstranit pouze obsah složky, ale zachovat složku, spusťte příkaz Odebrat položku, jak je znázorněno v příkladu níže:

|_+_|

Trik je přidat hvězdičku za poslední lomítko na konec cesty ke složce.

The Rekurze Parametr odstraní všechny složky a podsložky v zadané cestě. V tomto příkladu F:ITGFilesfolder*

Jak používat PowerShell k odstranění složky a obsahu bez potvrzení nebo výzvy

Trik, jak smazat složku a obsah, aniž byste vás žádali o potvrzení, je přidat Platnost a Potvrdit: $false parametry k Odebrat položku příkaz.

Pokud spustím níže uvedený příkaz bez přidání Potvrdit: $false parametr, mohu potvrdit, že chci smazat složku a veškerý její obsah.

|_+_|

Pokud však nechci dostávat tuto výzvu k potvrzení, zahrnu parametr Confirm:$false.

|_+_|

Příkaz by se měl spustit bez požadavku na potvrzení akce. Všimněte si také, že parametr, který zastaví výzvu k potvrzení, je Potvrdit: $false .

Pokud poslední příkaz stále vyžaduje potvrzení, nejprve spusťte Get-ChildItem příkaz. Poté výstup nasměrujte do příkazu Remove-Item, jak je znázorněno níže:

|_+_|

Poslední příkaz bohužel neodstraní složku nadřazené složky. Chcete-li odstranit nadřazenou složku a veškerý její obsah, přidejte parametr -filter do příkazu Get-ChildItem, jak je znázorněno v tomto příkazu:

|_+_|

Jak používat PowerShell k odstranění složky nebo souboru do koše

Pokud smažete složku nebo soubor pomocí příkazu Odebrat položku, odstraní se trvale. Jinými slovy, složka se nepřesune do koše.

Bohužel neexistuje žádná rutina PowerShell, která by smazala složku nebo soubor do koše. Snažil jsem se vytvořit vlastní funkci pro tento úkol. Našel jsem však existující funkci vytvořenou a stackoverflow.com přispěvatel.

Abych ji zpřístupnil našim čtenářům, nahrál jsem kopii funkce do S Zone. Chcete-li tuto funkci stáhnout a používat, postupujte takto:

  1. Klikněte na download Remove-ItemToRecycleBin.zip pro stažení funkce
  2. Poté rozbalte stažený soubor zip. Když soubor rozbalíte, vytvoří se složka s názvem Remove-ItemToRecycleBin.
  3. Nakonec zkopírujte složku do složky modulu profilu Windows 10 PowerShell. Složka se nachází v cestě níže
|_+_| je název vašeho profilu Windows 10. To se obvykle nachází v C:Users. Pokud však není v jednotce C, podívejte se na jednotku D nebo E.

Jakmile zkopírujete složku modulů, můžete ji použít jako jakýkoli jiný příkaz PowerShellu. Pro názornost, jak to funguje, vymažu E: eports do koše.

Než spustím příkaz, zde je snímek obrazovky mého prázdného koše.

Jak používat PowerShell k odstranění složky nebo souboru do koše

Nyní, chcete-li pomocí PowerShellu odstranit složku E: eports to Recycle Bin, spustím následující příkaz:

|_+_|

Po spuštění výše uvedeného příkazu se složka sestav přesune do koše. Podívejte se na snímek obrazovky níže…

Jak používat PowerShell k odstranění složky nebo souboru a vyloučení jiných složek nebo souborů

Příkaz Odebrat položku má příponu Vyloučit parametr. Tento parametr se používá k vyloučení složky nebo souboru, který si nepřejete smazat.

Zde je příklad. Chci smazat všechny složky v cestě F:ITGFilesTextfiles5. Nechci však smazat složku 3.

Jak používat PowerShell k odstranění složky nebo souboru a vyloučení jiných složek nebo souborů

Jak můžete vidět na snímku obrazovky výše, složka obsahuje složky i soubory.

Chcete-li odstranit pouze složky, musím nejprve pomocí příkazu Get-ChildItem vypsat všechny položky v cestě. Potom výstup proveďte kanálem Where-Object a filtrujte podle vlastnosti PSIsContainer.

|_+_|

Po spuštění posledního příkazu se odstraní všechny složky, ale ne složka3. Také si všimnete, že soubory v F:ITGFilesTextfiles5 nebyly odstraněny.

Důvodem, proč byly odstraněny pouze složky, je to, že v Kde-Objekt blok, filtroval jsem podle {$_.PSIsContainer -eq $TRUE}. Vlastnost PSIsContainer určuje, že objekt je složka.

Odebrat položku má také parametr nazvaný Include. Tento parametr provede opačnou akci než parametr Exclude.

Mohu dosáhnout stejného výsledku jako poslední příkaz nahrazením Exclude za Include. Na rozdíl od předchozího příkazu však nyní vypíšu složky, které chci smazat.

Zde je ukázkový příkaz, který odstraní pouze složku1 z F:ITGFilesTextfiles5.

|_+_|

Po spuštění předchozího příkazu si všimnete, že byla odstraněna pouze složka1.

Pokud chcete smazat soubory místo složek, změňte $_.PSIsContainer -eq $TRUE na $_.PSIsContainer -eq $FALSE

Jak používat PowerShell k odstranění složky, i když není prázdná

Pokud chcete odstranit složku pomocí PowerShellu – i když složka není prázdná – zahrňte Platnost a Rekurze parametry. Zde je příklad.

|_+_|

Jak používat PowerShell k odstranění prázdných složek starších než X dní

Chcete-li pomocí PowerShellu odstranit prázdné složky starší než x dní, postupujte podle následujících kroků…

V tomto příkladu chci odstranit složky starší než 90 dní z mého profilu Windows 10, C:UsersVictorA.

  1. Použijte Get-ChildItems k zobrazení pouze složek v zadané cestě:
|_+_|

Příkaz zobrazí seznam všech složek v zadané cestě. Pokud si pamatujete, v předchozích příkazech v této příručce jsme použili k vrácení složek Kde-Objekt filtrovat podle PSIsContainer vlastnictví. Rozhodl jsem se však dosáhnout stejného výsledku pomocí Adresář parametr Get-ChildItem .

  1. Potom přeneste výsledek příkazu Get-ChildItem do Where-Object. V rámci příkazu Where-Object přidejte filtr, který vrátí pouze prázdné složky. Zde je příkaz…
|_+_|
  1. Nyní musíme přidat cestu, která vrací složky v předchozím seznamu starší než 90 dní. To zahrnuje dva příkazy.

V prvním příkazu použiji Get-Date k určení data pro časové období. V příkladu před 90 dny. Pro usnadnění uložím výsledek do proměnné $DaysRef.

|_+_|

Poté v druhém příkazu zařadím další filtr do části Where-Object posledního příkazu.

|_+_|

Zde je výsledek posledního příkazu…

Jak používat PowerShell k odstranění prázdných složek starších než X dní

Jak vidíte, poslední příkaz nyní vrací pouze dvě prázdné složky. Tento příkaz jsem spustil 4. srpna 2021. Jak můžete vidět, LastWriteTime ze dvou složek je 16. 6. 2021 16:29.

Pro čtenáře z USA je toto datum 16. srpna 2021 (16. 6. 2021)

To znamená, že poslední úprava dvou složek je více než 90 dní od spuštění příkazu.

  1. A konečně, chcete-li odstranit tyto prázdné složky starší než 90 dní, použijte poslední příkaz k příkazu Remove-Item PowerShell.
|_+_|

Jak používat PowerShell k odstranění složky profilu uživatele

Chcete-li odstranit složku uživatelského profilu pomocí příkazů v této části, MUSÍTE otevřete PowerShell jako správce . V opačném případě se může zobrazit chybová zpráva přístup odepřen

Prvním krokem, jak pomocí PowerShellu odstranit složku profilu uživatele, je určit cestu ke složce uživatele. PowerShell má proměnnou prostředí, která vrací cestu k instalačnímu adresáři Windows.

Proměnná je…

|_+_|

Tento příkaz vrátí cestu jako C:WINDOWS. Mezitím je složka Users (která obsahuje všechny složky profilu uživatele) umístěna v kořenovém adresáři jednotky, kde je nainstalován systém Windows.

V mém příkladu je složka Users umístěna na jednotce C:WINDOWS.

Chcete-li však vrátit C: z C:WINDOWS, použijte metodu rozdělení, jak je znázorněno v příkazu níže.

|_+_|

Příkaz vrátí C: a WINDOWS. Dalším krokem je vrácení C: – toto je první položka v poli.

Jak používat PowerShell k odstranění složky profilu uživatele

Chcete-li získat přístup k této položce, přidejte [0] k poslednímu příkazu, jak je znázorněno níže.

|_+_|

Nyní máme C:

Jak používat PowerShell k odstranění složky profilu uživatele

Již dříve jsem zmínil, že všechny uživatelské profily jsou umístěny ve složce Uživatelé. Z posledního příkazu přidám Users do návratového C:Users

|_+_|

Nyní máme úplnou cestu ke složce Uživatelé.

V dalším příkazu použiji Get-ChildItem k vypsání všech složek profilu uživatele ve složce Users. Abychom se však vyhnuli chybám, nejprve uložím poslední příkaz do proměnné.

|_+_|

Nyní mohu pomocí Get-ChildItem vrátit všechny složky profilu uživatele ve složce Users. Zde je příkaz:

|_+_|

A výsledek v PowerShellu…

Jak používat PowerShell k odstranění složky profilu uživatele

Poslední bit bude převedení posledního příkazu do kanálu Remove-Item. Musíte však použít parametr Filtr k odstranění pouze složky uživatelského profilu, které se chcete zbavit.

V tomto příkladu chci odstranit složku uživatelského profilu s názvem victo a všechny její podsložky

Zde je poslední příkaz, který používá PowerShell k odstranění složky profilu uživatele:

|_+_|

Po spuštění tohoto příkazu nyní, pokud spustíte příkaz níže, odstraněný profil již nebude uveden.

|_+_|

Jak používat PowerShell k odstranění složky z Appdata

PowerShell má dvě proměnné prostředí pro složku AppData přihlášeného uživatele.

|_+_|

Proměnná prostředí, kterou se rozhodnete použít, závisí na umístění složky, kterou chcete odstranit. Pokud si však nejste jisti umístěním složky, kterou chcete odstranit, můžete prohledat obě umístění.

Abych toho dosáhl, uložím obě proměnné prostředí do proměnné $appdatafolders…

|_+_|

Poté použiji smyčku ForEach ke kontrole obou umístění. Zde je kód, který tuto práci dělá…

|_+_| Zahrnul jsem parametr WhatIf, takže PowerShell složku neodstraní. Místo toho PowerShell zobrazí akci, kterou měl provést, pokud nebyl zahrnut parametr WhatIf.

Zde je výsledek příkazu v PowerShellu. Obrázek napravo na snímku obrazovky je složka v mé složce AppData.

Jak používat PowerShell k odstranění složky z Appdata

Jak používat PowerShell k odstranění skryté složky

Příkaz Get-ChildItem má parametr nazvaný Hidden. Pokud chcete vypsat skryté složky v zadané složce, zahrňte parametr Skryté.

Na mém snímku obrazovky níže mám 3 složky (není nebo jsou skryté).

Abych předvedl, jak používat PowerShell k odstranění skrytých složek, skryji Textfiles3. Nyní je složka skrytá.

Jak používat PowerShell k odstranění skryté složky

Chcete-li zobrazit skrytou složku, spustím příkaz níže…

|_+_|

Jak se očekávalo, příkaz uvádí pouze skrytou složku.

Chcete-li odstranit skrytou složku pomocí PowerShellu, převedu nyní poslední příkaz do příkazu Remove-Item.

|_+_|

Abych potvrdil, že složka byla odstraněna, povolil jsem atribut zobrazit skryté položky v Průzkumníku souborů.

Jak používat PowerShell k odstranění skryté složky

Jak používat PowerShell k odstranění souborů, ale zachovat strukturu složek

Mohou nastat případy, kdy budete chtít odstranit všechny soubory ve složce, včetně jejích podsložek, ale zachovat strukturu složek.

Chcete-li toho dosáhnout, musíte spustit příkaz Get-ChildItem a zadat parametr File. Když použijete parametr Soubor, Get-ChildItem zobrazí pouze soubory v zadané složce.

Abych demonstroval, jak to funguje, vytvořil jsem strukturu složek zobrazenou na obrázku níže:

Jak používat PowerShell k odstranění souborů, ale zachovat strukturu složek

Jak je vidět na snímku obrazovky, složka1 má dvě podsložky, složku2 a složku3. Kromě toho složka2 a složka3 obsahují nějaké soubory.

Chcete-li použít Get-ChildItem k zobrazení pouze souborů v cestě F:ITGFilesfolder1, spustím příkaz níže:

|_+_|

Příkaz zobrazí pouze soubory ve dvou cestách, F:ITGFilesfolder1folder2 a Directory: F:ITGFilesfolder1folder3

Nakonec, chcete-li odstranit soubory, ale zachovat strukturu složek, přesuňte poslední příkaz do Remove-Item…

|_+_|

Příkaz odstraní všechny soubory, ale ponechá strukturu složek nedotčenou!

Jak používat PowerShell k odstranění složky klíče registru

Příkaz k vypsání a odstranění složky klíče registru je stejný příkaz, který se používá k odstranění normálních složek.

Pokud jste četli tuto příručku od začátku, použili jsme zatím dva příkazy:

Get-ChildItem : používá se k výpisu položek v zadané cestě
Odebrat položku : používá se k odstranění souborů/složek uvedených v Get-ChildItem

Jediný rozdíl je však ve způsobu přístupu ke složkám klíče registru.

Existuje několik způsobů, jak naformátovat klíč registru pro použití v příkazech Get-ChildItem a Remove-Item. Pro tento příklad však použiji níže uvedenou metodu:

|_+_|

V tomto příkladu chci získat přístup ke složce klíče registru, HKEY_CURRENT_USERControl PanelDesktop. Jak můžete vidět ve formátu příkazu výše, k tomu jsem přidal slovo registr následovaný dvěma dvojtečkami, ::

Chcete-li se dozvědět více o tom, jak PowerShell pracuje s registrem Windows, přečtěte si naši příručku – Jak používat PowerShell ke čtení hodnoty registru .

Přesunutím příkladu k dalšímu kroku, chcete-li zobrazit položky ve výše uvedené složce klíče registru, spusťte níže uvedený příkaz:

|_+_|

Příkaz zobrazí všechny složky podklíče v zadané složce klíče registru.

Pokud chci smazat zadanou složku, nejprve spustím Get-ChildItem. Poté převedu výstup do Select-Object

|_+_|

Výše uvedený příkaz zobrazí úplnou cestu ke všem podklíčům v mé původní složce klíče registru:

Jak používat PowerShell k odstranění složky klíče registru

Poté, abych odstranil podklíče, převedu poslední příkaz do Remove-Item. Chcete-li však odstranit konkrétní složku podklíče, nejprve převedu poslední příkaz do Where-Object a filtruji podle názvu podklíče, který chci odstranit:

|_+_|

Poslední příkaz nyní vrací pouze zadanou cestu ke složce podklíče registru.

Nakonec, chcete-li odstranit tento podklíč složky pomocí PowerShellu, přesuňte poslední příkaz do Remove-Item. Předtím však musíte upravit klíč registru a přenést jej do Get-Item.

Aby to bylo jednoduché, uložím poslední příkaz do proměnné

|_+_|

Poté jej naformátujte pro příkaz Get-Item

|_+_|

Nakonec nasměrujte naformátovanou cestu klíče do Get-Item…

|_+_|

Nyní můžeme smazat hodnotu převedením posledního příkazu na Remove-Item (zahrnul jsem parametr whatif, protože tento klíč NECHCI smazat)

|_+_|

A tady je výsledek…

Jak používat PowerShell k odstranění složky klíče registru

Jak používat PowerShell k odstranění názvu složky jako

V průběhu dalších příkladů v této příručce jsem ukázal, jak použít PowerShell k odstranění názvu složky pomocí filtru Like. Jak již bylo ukázáno v předchozích příkladech, tento filtr lze použít v příkazu Get-ChildItem nebo v příkazu Where-Object.

Chcete-li například odstranit všechny soubory a složky s názvy jako soubor v cestě F:ITGFiles, mohu použít následující příkaz:

|_+_| Aby filtr fungoval, možná budete muset použít zástupný znak. V tomto příkladu používám zástupný znak hvězdička.

Stejného výsledku mohu dosáhnout propojením Get-ChildItem na Where-Object. Poté proveďte filtrování v Where-Object.

|_+_|

Příkaz vrátí stejný výsledek jako poslední příkaz!

Jak používat PowerShell k odstranění názvu složky jako

Stejně jako u jiných příkladů v této příručce, chcete-li odstranit složku, přesuňte výstup kteréhokoli ze dvou příkazů do Remove-Item.

Jak používat PowerShell k odstranění složek větších než zadaná velikost

Pokud chcete pomocí PowerShellu odstranit složky větší než zadaná velikost, musíte nejprve vypočítat velikosti složek v zadané cestě.

Musíte však uvést úplnou cestu k podsložkám v zadané cestě ke složce. Chcete-li zobrazit úplnou cestu ke všem podsložkám v cestě ke složce, spusťte příkaz podobný tomu níže:

|_+_|

Příkaz vypíše úplné cesty ke všem podsložkám v cestě ke složce F:ITGFiles

Za použití Hloubka parametr s hodnotou 0, namísto Rekurze zajišťuje, že budou vráceny pouze podsložky první úrovně. Jak používat PowerShell k odstranění síťové sdílené složky

Nyní, když mám úplnou cestu k podsložce, použiji tyto informace k výpočtu velikosti každé podsložky. Abych však měl úplnou cestu k podsložkám (je nutné je později odstranit) a velikost, musím vytvořit vlastní skript.

Zde je celý skript:

|_+_|

A zde je výsledek příkazu v PowerShell ISE .

Jak můžete vidět na snímku obrazovky, skript vrací pouze jeden soubor, který splňuje kritéria velikosti (10 MB).

K dokončení úkolu nám samozřejmě zbývá poslední kousek – smazat soubor. Chcete-li odstranit soubor, který splňuje požadavek na velikost, upravil jsem příkaz IF, jak je znázorněno v tomto skriptu…

|_+_|

Zde je konečný skript, který odstraní složky větší než zadaná hodnota

|_+_| Chcete-li použít skript, změňte cestu F:ITGFiles v Get-ChildItem – řádek 1. Změňte také velikost složky, kterou chcete odstranit – z 10 (v MB) na požadovanou velikost.

Jak používat PowerShell k odstranění síťové sdílené složky

Proces použití PowerShellu k odstranění síťových složek se neliší od odstranění místních složek. Jediný rozdíl je v tom, jak určíte síťovou složku.

Kromě toho, jak specifikujete síťovou složku, musíte mít také správná oprávnění. Konkrétně musíte mít oprávnění ke změně sdílení.

Kromě toho také musíte mít oprávnění k úpravě zabezpečení NTFS.

Jakmile jsou tyto požadavky na oprávnění splněny, můžete přistupovat k síťové složce pomocí příkazu Get-ChildItem. Poté, chcete-li složku odstranit, přepojte výstup Get-ChildItem na Remove-Item.

Abych předvedl, jak použít PowerShell k odstranění síťové složky, použiji sdílenou složku s názvem TestShare. Složka se nachází na mém Windows 11 testovací PC s názvem ITGWIN11BETA.

K vypsání obsahu sdílené síťové složky použiji příkaz Get-ChildItem, jak je uvedeno níže…

|_+_|

Stejně jako místní složka uvádí příkaz všechny složky a podsložky ve sdílené síťové složce.

Jak používat PowerShell k odstranění složky nebo souboru počínaje

Od tohoto bodu můžete poslední příkaz převést přímo do Remove-Item. Případně můžete použít nějaký filtr před tím, než jej nasměrujete na Remove-Item.

Pokud například chcete odstranit konkrétní složku, můžete použít Filtr parametr v Get-ChildItem. Alternativně můžete Get-ChildItem propojit do Where-Object a použít Filtr parametr v Where-Object.

Nakonec, chcete-li odstranit položku ve sdílené síťové složce, přesuňte výsledek do Odstranit položku.

Jak používat PowerShell k odstranění složky nebo souboru počínaje

Pokud si přejete odstranit složky nebo soubory začínající konkrétním názvem, můžete použít Filtr parametr v rutině Get-ChildItem k zobrazení seznamu souborů. Poté přepište výsledek do Remove-Item.

Případně můžete použít Vymazat() Metoda v Get-ChildItem.

Pro ilustraci tohoto příkladu vymažu všechny soubory a složky začínající na f na snímku obrazovky níže.

Jak jsem již zmínil, prvním krokem je použití rutiny Get-ChildItem s parametrem Filtr. Zde je ukázkový příkaz:

|_+_| Další možností by mohlo být propojení Get-ChildItem do Where-Object a provedení filtrování v Where-Object .

Příkaz zobrazí seznam všech souborů začínajících na f. Podívejte se na snímek obrazovky níže:

Jak pomocí prostředí PowerShell odstranit soubor nebo soubor a poté zapsat zprávu do souboru protokolu

Posledním krokem k odstranění všech složek a souborů začínajících na f je výstup výstupu z

|_+_|

Jak používat PowerShell k odstranění složky SoftwareDistribution

Jak již možná víte, systém Windows ukládá stažené aktualizace do složky SoftwareDistribution. V ideálním případě tuto složku nemusíte mazat.

Pokud je však databáze Windows Update poškozená, jedním ze způsobů, jak to opravit, je odstranit soubor Distribuce softwaru složka. Než to však uděláte, musíte nejprve zastavit službu Windows Update.

Chcete-li zastavit službu Windows Update, spusťte PowerShell jako správce. Poté spusťte níže uvedený příkaz:

|_+_| Pokud službu Windows Update nezastavíte, NEBUDETE moci odstranit Distribuce softwaru složka

Dále, chcete-li pomocí PowerShellu odstranit složku SoftwareDistribution, spusťte následující příkazy:

|_+_|

Nakonec, chcete-li znovu vytvořit složku SoftwareDistribution, restartujte službu Windows Update

|_+_|

Jak používat PowerShell k odstranění souboru nebo složky po zkomprimování

Chcete-li zabalit soubor nebo složku, použijte příkaz Compress-Archive, jak je znázorněno v příkladu níže:

|_+_| Změňte LiteralPath na zdrojovou cestu souboru nebo složky, kterou chcete komprimovat. Změňte také DestinationPath na cestu, kterou chcete uložit zazipovaný soubor.

Jakmile soubor zazipujete, smažte jej pomocí příkazu níže...

|_+_|

Jak pomocí prostředí PowerShell odstranit soubor nebo soubor a poté zapsat zprávu do souboru protokolu

Pokud chcete pomocí PowerShellu odstranit soubor nebo složku a poté nahlásit akce do souboru protokolu, musíte nejprve definovat názvy souborů protokolu.

V tomto příkladu chci mít dva soubory protokolu, 1 pro protokolování úspěchu a druhý pro protokolování chyb.

Obvykle rád vytvářím své protokolové soubory na základě data. Pro tento příklad nejprve vytvořím datumové razítko a uložím jej do proměnné:

|_+_|

Poté vytvořím dva soubory protokolu založené na datovém razítku…

|_+_|

Chybí jeden kousek – cesta k adresáři pro uložení souborů protokolu. Abych přidal tento bit, uložím cestu do proměnné…

|_+_|

Poté přidejte cestu k souborům protokolu výše…

|_+_|

Poslední dva příkazy vytvoří dva soubory protokolu. Podrobnosti viz snímek obrazovky níže…

Nyní, když jsem vytvořil naše soubory protokolu, nyní vytvořím skript PowerShell, který odstraní soubory a složky v zadané cestě. Poté zapište zprávy do souborů protokolu.

V tomto příkladu chci odstranit soubory ve složce WindowsTemp. Prvním krokem je uložit cestu k této složce do proměnné…

|_+_|

Poté použiji Get-ChildItem k zobrazení obsahu složky a výstup přesměruji do Remove-Item.

Abych však mohl zachytit chyby, musím celý příkaz uzavřít do Try, Catch.

Zde je celý scénář…

|_+_| Chcete-li skript použít, zkopírujte jej do PowerShell ISE . Potom změňte proměnnou $Path na cestu ke složce, kterou chcete odstranit. Také změňte $LogPath na cestu ke složce, do které chcete uložit soubory protokolu.

To je vše – náš komplexní průvodce používáním PowerShellu k odstranění souborů nebo složek! Doufám, že vám průvodce pomohl.

Pokud vám to pomohlo, hlasujte Ano to Byl tento příspěvek užitečný? níže. Případně můžete sdílet podrobnou zpětnou vazbu pomocí formuláře ZANECHAT ODPOVĚĎ na konci této stránky.

A nakonec, další průvodce prostředím PowerShell s příklady naleznete na naší stránce s návody k prostředí Windows PowerShell. Užitečné mohou být také naše BEZPLATNÉ školicí příručky PowerShell.