Как да изтриете папки или файлове с PowerShell
Искате ли да изтриете файлове и папки с PowerShell, но не знаете как? Тази статия ще ви даде ръководство стъпка по стъпка как да използвате PowerShell за изтриване на папка, файл или всички папки и файлове в определен път.
Тази публикация в блога ви учи на различни начини за изтриване на папки и файлове с помощта на PowerShell. Ако това звучи интересно, продължете да четете!
Ръководството започва с обяснение на 2 начина да използвате PowerShell за изтриване на папки и файлове. След това, във втория раздел, ще научите как да коригирате често срещани грешки, свързани с изтриването на файлове и папки с PowerShell.
И накрая, ръководството съдържа повече от 20 примера.
Разгледайте темите на публикациите
- 2 начина за изтриване на папка или файл с PowerShell
- Как да коригирате често срещани грешки с Powershell изтриване на папка или файл
- Как да поправите грешката за отказ при изтриване на папка или файл на Powershell
- Как да поправите папката за изтриване на Powershell, която не може да бъде премахната, защото не е празна Грешка
- Как да коригирате папка за изтриване на Powershell, използвана от друга грешка в процеса
- Как да коригирате твърде дълга грешка при изтриване на папка или папка на файл или име на файл в Powershell
- Как да коригирате грешката за изтриване на папка Powershell Достъпът до пътя е отказан
- Още примери за изтриване на папка или файл на Powershell
- Как да изтриете папка или файл с PowerShell, ако съществува
- Как да изтриете папка и нейните подпапки с PowerShell
- Как да изтриете папка или файл, по-стар от x дни (или въз основа на дата) с PowerShell
- Как да използвате PowerShell за изтриване само на съдържанието на папка
- Как да използвате PowerShell за изтриване на папка и съдържание без потвърждение или подкана
- Как да използвате PowerShell за изтриване на папка или файл в кошчето
- Как да използвате PowerShell, за да изтриете папка или файл и да изключите други папки или файлове
- Как да използвате PowerShell, за да изтриете папка, дори ако не е празна
- Как да използвате PowerShell за изтриване на празни папки, по-стари от X дни
- Как да използвате PowerShell за изтриване на папка с потребителски профил
- Как да използвате PowerShell за изтриване на папка от Appdata
- Как да използвате PowerShell за изтриване на скрита папка
- Как да използвате PowerShell за изтриване на файлове, но запазване на структурата на папките
- Как да използвате PowerShell за изтриване на папка с ключ в системния регистър
- Как да използвате PowerShell за изтриване на име на папка като
- Как да използвате PowerShell за изтриване на папки, по-големи от посочения размер
- Как да използвате PowerShell за изтриване на мрежова споделена папка
- Как да използвате PowerShell за изтриване на папка или файл, започващ с
- Как да използвате PowerShell, за да изтриете папката SoftwareDistribution
- Как да използвате PowerShell, за да изтриете файл или папка, след като ги компресирате
- Как да използвате PowerShell, за да изтриете файл или файл, след което да напишете отчет в регистрационен файл
2 начина за изтриване на папка или файл с PowerShell
PowerShell предлага два начина за изтриване на елементи. Можете да изтриете папка или файл с метода за изтриване на PowerShell.
Второ, можете да използвате Remove-Item, за да изтриете елементи в PowerShell. В следващите 2 подраздела на този раздел ще научите как да използвате тези методи.
Метод 1: Използвайте Powershell Изтрий() Метод за изтриване на папка или файл
За да може PowerShell да изтрие папка, ви е необходима командата Get-ChidItem. Get-ChildItem Cmdlet връща елементите и дъщерните елементи на определено място.
За да изброите всички файлове и папки в пътя E: eports , изпълнете командата по-долу:
|_+_|Ето резултата в PowerShell...
Тази команда има наречен метод Изтрий . Можете да използвате Изтрий Метод за изтриване на папки и файлове.
За да видите наличните методи в горната команда, прехвърлете командата към командата Get-Member.
|_+_|Командата върна два типа свойства. един , System.IO.DirectoryInfo (вижте първото изображение по-долу). две , System.IO.FileInfo . Първият се отнася до папки в пътя, докато вторият се отнася до файлове.
Погледнете внимателно двете изображения. Забележете, че всеки от тях има метод, наречен Изтрий . Можете да използвате Изтрий Метод в PowerShell за изтриване на папка или файл.
В следващия подраздел ще покажа как се използва Изтрий Метод.
Как да използвам Изтрий () Метод в Powershell за изтриване на папка или файл
Синтаксисът на Изтрий Методът е:
|_+_|Обект е папката с подробности за файла, върнати от командлета Get-ChidItem. Освен това, Изтрий е методът, който обикновено се следва от оператора ().
най-добрата връзка 7 roms
За да улесните разбирането на горната команда на синтаксис, ето оригиналната команда Get-ChildItem:
|_+_|и резултатът...
Въз основа на това, което обясних досега, на теория можете да използвате PowerShell Delete Method, за да изтриете папката, наречена reports, като изпълните командата по-долу:
|_+_|Последната команда обаче връща съобщението за грешка. Директорията не е празна.
За да реша този проблем, имам нужда от команда, която връща всички файлове и папки и подпапки в пътя. След това трябва да прехвърля резултата към цикъла aForEach.
Ето модифицираната команда:
|_+_|Ето командата в PowerShell. Всички файлове са изтрити от посочения път.
Последната команда изтрива файловете в посочената папка и нейните подпапки. Въпреки това, той не изтрива папките.
За да изтриете папките, изпълнете командата по-долу:
|_+_|За да потвърдите това E: eports сега е празен, ще изпълня командата Get-ChildItem отново.
|_+_|Не връща нищо!
Преди да премина към следващия раздел, нека обясня как тази команда изтри всички файлове и подпапки.
|_+_|Get-ChildItem има два извикани параметъра Включете и Рекурсия . В командата използвах -Включете *.* да кажете на PowerShell да включи всеки файл в резултата.
Рекурсия , от друга страна, казва на Get-ChildItem да върне всички папки и подпапки.
Във втората част на командата поставих Get-ChildItem към оператора ForEach. ForEach преминава през всички обекти, върнати от Get-ChildItem, и използва Изтрий Метод за изтриването им.
Както вече споменах, когато представих този раздел, PowerShell има командлет, наречен Премахни артикул конкретно. Можете също да използвате този командлет на PowerShell, за да изтриете папка или файл.
Следващият раздел обхваща как да използвате Премахни артикул . Според моя опит, използвайки Премахни артикул е по-добре от използването Изтрий() Метод.
Метод 2: Използвайте Powershell Премахни артикул Команда за изтриване на папка или файл
За да изтриете файл или папка с Премахни артикул все още трябва да използвате командата PowerShell, Get-ChildItem. След това направете резултата към Премахни артикул .
Можете да бягате Премахни артикул без Get-ChildItem . Въпреки това, от моя опит, при повечето обстоятелства е най-добре да изброите елемента с Get-ChildItem . След това насочете изхода към Премахни артикул .В първия си пример в този раздел искам да използвам PowerShell, за да изтрия папката, наречена ITGServer2. Вижте екранната снимка по-долу.
Ето командата PowerShell, която ще изтрие папката...
|_+_|След като изпълните горната команда, папката я няма!
Във втория си пример искам да изтрия папките и подпапките в E: eports. Командата по-долу ще свърши работа...
|_+_|След изпълнение на последната команда, всички папки в посочената папка са изчезнали!
Как да коригирате често срещани грешки с Powershell изтриване на папка или файл
Когато стартирате командата Remove-Item PowerShell, за да изтриете папка или файл, тя може да върне някои грешки. Този раздел обхваща някои от тези грешки и как да ги поправите.
Смятам, че е по-добре да обсъдим решенията на тези често срещани грешки, преди да се потопим в някои примери за системни администратори от реалния живот за това как да използваме PowerShell за изтриване на папки или файлове.
Как да поправите грешката за отказ при изтриване на папка или файл на Powershell
Ако стартирате Remove-Item, за да изтриете файл или папка и получите съобщение за грешка Access Denied, опитайте следното:
- Променете собственика на файла или папката – използвайте кодовете по-долу, за да промените собственика на файл или папка на локалния администратор
За да изпълните тази команда, отворете PowerShell като администратор, в противен случай последната команда ще се провали.
|_+_| Променете пътя на папката, F:ITGFilesTextfiles към пълния път на вашия файл или папкаСлед като смените собственика на локалния администратор, опитайте да стартирате изтриването на файла или папката отново с PowerShell. Ако не работи, опитайте тези корекции.
- Добавете Сила параметър към Remove-Item
- Опитайте вместо това метода Delete(). Ако не знаете как да използвате метода PowerShell Delete(), вижте раздела Как да използвате метода Delete() в Powershell за изтриване на папка или файл (връзката се отваря в различен раздел на браузъра) на това ръководство.
Как да поправите папката за изтриване на Powershell, която не може да бъде премахната, защото не е празна Грешка
Ако получите, не може да бъде премахнат, защото не е празна грешка, когато изпълните командата:
|_+_|Опитайте да използвате Get-ChildItem с параметъра Recurse. След това го насочете към Remove-Item с Сила и Рекурсия параметри.
Ето примерна команда:
|_+_|Като алтернатива можете да стартирате Get-ChildItem и да посочите звездички зад последната наклонена черта в пътя. Това изтрива цялото съдържание на папката.
Например, ако изпълня командата...
|_+_|...и получаването не може да бъде премахнато, защото не е празно, за да отстраня проблема, първо ще изпълня командата по-долу:
|_+_|Последната команда изтрива само елементите в E: eports. Накрая, за да изтрия папката (която вече е празна), ще изпълня командата по-долу...
|_+_|Как да коригирате папка за изтриване на Powershell, използвана от друга грешка в процеса
Ако получите Remove-Item връща съобщението за грешка, тъй като се използва от друг процес, трябва да включите параметъра Force.
Ето оригинала, който върна съобщението за грешка...
|_+_|За да разрешите този проблем, изпълнете командата по-долу за файл:
|_+_|Последната команда успешно изтри файла...
Как да коригирате твърде дълга грешка при изтриване на папка или папка на файл или име на файл в Powershell
Това изглежда е известно ограничение с PowerShell.
Въпреки това, за да разрешите този проблем, можете да използвате за теб команда cmd. След това прехвърлете резултата към командата Remove-Item.
Ето един пример…
|_+_| Командата dir е cmd еквивалент на Get-ChildItem на PowerShell.Как да коригирате грешката за изтриване на папка Powershell Достъпът до пътя е отказан
Командата PowerShell Remove-Item хвърля съобщение за грешка за достъп до пътя е отказан, ако се опитате да изтриете папка, за която нямате разрешение за изтриване.
Причината да получите това съобщение за грешка е, че нямате достъп до папката. Преди да изпълните командата Remove-Item, изпълнете следните команди, за да предоставите достъп на локалните администратори до папката.
Тази корекция предполага, че акаунтът, който сте използвали за влизане, е член на локалната група администратори. Преди да изпълните командата по-долу в PowerShell ISE, променете пътя F:ITGFilesTextfiles към пътя към папката, която се опитвате да изтриете. |_+_|След като приключите с изпълнението на скрипта по-горе, изпълнете отново командата Remove-Item.
Още примери за изтриване на папка или файл на Powershell
Този последен раздел от ръководството обхваща множество примери за това как да използвате PowerShell за изтриване на файлове или папки.
Как да изтриете папка или файл с PowerShell, ако съществува
Тъй като този пример има условие – ако папката или файлът съществува – първият път на командата проверява дали елементът съществува.
Можете да използвате Тест-път команда, за да проверите дали папка или файл съществува. След това използвате условния оператор IF, за да премахнете папката или файла, ако съществуват.
Можем да комбинираме и двете команди в блока на операторите IF...
В този пример искам да изтрия папка, наречена ITGServer в пътя F:ITGFilesTextfiles – ако папката съществува.
Ето командата…
|_+_|В този пример тази папка съществува, така че е била изтрита. Ако обаче опитаме командата с файл, който не съществува, ще получим съобщението в иначе блок на оператора IF.
Как да изтриете папка и нейните подпапки с PowerShell
За да изтриете папка и всички подпапки, стартирайте Премахни артикул команда с Рекурсия и Сила параметри.
Ето един пример…
|_+_|Как да изтриете папка или файл, по-стар от x дни (или въз основа на дата) с PowerShell
В този пример, тъй като искаме да изтрием файлове или папки, по-стари от x дни, първата стъпка е да получим справката за дните. Това става с командата Get-Date.
Въпреки това, тъй като искаме да изтрием елементи, по-стари от x дни, трябва да посочим x дни като отрицателна стойност. Например, за да изтриете всички файлове или папки, по-стари от 7 дни, вземете справката за дните с командата по-долу:
|_+_|След това използвайте Get-ChildItem команда, за да получите LastWriteTime собственост на артикула. В LastWriteTime свойството записва последната дата на промяна на папка или файл.
В допълнение към LastWriteTime свойство, командата Get-ChildItem връща друго извикано свойство PSIsContainer . Свойството PSIsContainer разграничава файл от папка.
Ако PSIsContainer е вярно, това означава, че елементът е папка. От друга страна, ако PSIsContainer е false, това означава, че елементът е файл.
Преди да представя свойството LastWriteTime, нека първо изпълня команда Get-ChildItem и филтрирам чрез свойството PSIsContainer:
|_+_|Тази команда върна един обект, наречен ITG защото това е единствената папка в пътя F:ITGFilesTextfiles.
Като алтернатива, за да изброите само файлове в пътя, изпълнете командата по-долу:
|_+_|Този път, защото уточних от $ _. PSIsConta слиза -eq $FALSE , PowerShell връща всички не-папки.
Сега, когато разбирате как да изброявате папки или файлове в папка, нека представим свойството LastWriteTime. Както споменах по-рано, последната дата и час, когато елементът е променен, се записват в свойството LastWriteTime.
Тези команди включват свойството LastWriteTime:
|_+_|Първата команда връща всички папки, които са били последно променени преди препратката за деня, записана в променливата $DaysRef. В този пример референтният ден е 7 дни.
Напротив, втората команда връща всички файлове, променени през последните x дни – където x дни е равно на 7 в този пример.
Вторият и последен етап от този пример, който използва PowerShell за изтриване на папки с файлове, по-стари от x дни, е прехвърлянето на командата Where-Object към Remove-Item.
Скриптът по-долу завършва задачата за изтриване на файловете и папката...
|_+_| Ако нито един файл или папка не отговаря на критериите LastWriteTime, никой няма да бъде изтрит.Как да използвате PowerShell за изтриване само на съдържанието на папка
В този пример ще изтрия съдържанието на F:ITGFilesfolder, но не и самата папка.
Ако искате да изтриете само съдържанието на папка, но да запазите папката, изпълнете командата Remove-Item, както е показано в примера по-долу:
|_+_|Номерът е да добавите звездичка след последната наклонена черта в края на пътя на папката.
В Рекурсия параметърът изтрива всички папки и подпапки в посочения път. В този пример F:ITGFilesfolder*
Как да използвате PowerShell за изтриване на папка и съдържание без потвърждение или подкана
Трикът за изтриване на папка и съдържание, без да ви иска потвърждение, е да добавите Сила и Потвърдете: $false параметри към Премахни артикул команда.
Ако изпълня командата по-долу, без да добавя Потвърдете: $false параметър, ще мога да потвърдя, че искам да изтрия папката и цялото й съдържание.
|_+_|Ако обаче не искам да получавам тази подкана за потвърждение, ще включа параметъра Confirm:$false.
|_+_|Командата трябва да се изпълнява, без да се иска потвърждение на действието. Също така имайте предвид, че параметърът, който спира подканата за потвърждение, е Потвърдете: $false .
Ако последната команда все още подканва за потвърждение, първо изпълнете Get-ChildItem команда. След това прехвърлете изхода към командата Remove-Item, както е показано по-долу:
|_+_|За съжаление, последната команда не изтрива папката на родителската папка. За да изтриете родителската папка и цялото й съдържание, добавете параметъра -filter към командата Get-ChildItem, както е показано в тази команда:
|_+_|Как да използвате PowerShell за изтриване на папка или файл в кошчето
Ако изтриете папка или файл с командата Remove-Item, той се изтрива за постоянно. С други думи, папката не се премества в кошчето.
За съжаление няма команда PowerShell за изтриване на папка или файл в кошчето. Опитвах се да създам персонализирана функция за тази задача. Въпреки това открих съществуваща функция, създадена от a stackoverflow.com сътрудник.
За да я направя достъпна за нашите читатели, качих копие на функцията в S Zone. За да изтеглите и използвате функцията, следвайте стъпките по-долу:
- Щракнете върху изтегляне Remove-ItemToRecycleBin.zip, за да изтеглите функцията
- След това разархивирайте изтегления zip файл. Когато разархивирате файла, той ще създаде папка, наречена Remove-ItemToRecycleBin.
- Накрая копирайте папката във вашия Windows 10 PowerShell профил mouldule папка. Папката се намира в пътя по-долу
След като копирате папката на модула, вашата папка на модула, можете да я използвате като всяка друга команда на PowerShell. За да илюстрирам как работи, ще изтрия E: eports в кошчето.
Преди да изпълня командата обаче, ето екранна снимка на моята празна кошче.
Сега, за да използвам PowerShell за изтриване на папката, E: отчита в кошчето, ще изпълня командата по-долу:
|_+_|След като изпълните горната команда, папката с отчети ще бъде преместена в кошчето. Вижте екранната снимка по-долу…
Как да използвате PowerShell, за да изтриете папка или файл и да изключите други папки или файлове
Командата Remove-Item има Изключете параметър. Този параметър се използва за изключване на папка или файл, който не желаете да изтриете.
Ето един пример. Искам да изтрия всички папки в пътя, F:ITGFilesTextfiles5. Въпреки това не искам да изтрия папка3.
Както можете да видите от екранната снимка по-горе, папката има както папки, така и файлове.
За да изтрия само папки, първо трябва да използвам командата Get-ChildItem, за да изброя всички елементи в пътя. След това прехвърлете изхода към Where-Object и филтрирайте по свойството PSIsContainer.
|_+_|След изпълнение на последната команда, всички папки се изтриват, но не и folder3. Освен това забелязвате, че файловете в F:ITGFilesTextfiles5 не са били изтрити.
Причината, поради която само папките са били изтрити, е, че в рамките на Къде-обект блок, филтрирах по {$_.PSIsContainer -eq $TRUE}. Свойството PSIsContainer указва, че обектът е папка.
Продължавайки нататък, Remove-Item също има параметър, наречен Include. Този параметър извършва действие, противоположно на параметъра Exclude.
Мога да постигна същия резултат като последната команда, като заменя Exclude с Include. Въпреки това, за разлика от предишната команда, сега ще изброя папките, които искам да изтрия.
Ето примерна команда, която изтрива само папка1 от F:ITGFilesTextfiles5.
|_+_|След като изпълните предишната команда, ще забележите, че само папка1 е изтрита.
Ако искате да изтриете файлове вместо папки, променете $_.PSIsContainer -eq $TRUE на $_.PSIsContainer -eq $FALSEКак да използвате PowerShell, за да изтриете папка, дори ако не е празна
Ако искате да изтриете папка с PowerShell – дори ако папката не е празна – включете Сила и Рекурсия параметри. Ето един пример.
|_+_|Как да използвате PowerShell за изтриване на празни папки, по-стари от X дни
Следвайте стъпките по-долу, за да използвате PowerShell за изтриване на празни папки, по-стари от x дни...
В този пример искам да изтрия папки, по-стари от 90 дни от моя профил в Windows 10, C:UsersVictorA.
- Използвайте Get-ChildItems, за да изброите само папки в посочения път:
Командата изброява всички папки в посочения път. Ако си спомняте, използвахме предишни команди в това ръководство за връщане на папки Къде-обект за филтриране по PSIsContainer Имот. Решавам обаче да постигна същия резултат с помощта на Указател параметър на Get-ChildItem .
- След това прехвърлете резултата от командата Get-ChildItem към Where-Object. В рамките на командата Where-Object добавете филтър, който връща само празни папки. Ето командата…
- Сега трябва да добавим пътя, който връща папки в предишния списък, по-стар от 90 дни. Това включва две команди.
В първата команда ще използвам Get-Date, за да определя датата за периода от време. В примера преди 90 дни. За да го направя по-лесно, ще запиша резултата в променлива, наречена $DaysRef.
|_+_|След това във втората команда ще включа друг филтър в частта Where-Object на последната команда.
|_+_|Ето резултата от последната команда...
Както можете да видите, само две празни папки сега се връщат от последната команда. Изпълних тази команда на 4 август 2021 г. Както можете да видите, the LastWriteTime от двете папки е 16.06.2021 16:29.
За читателите в САЩ тази дата е 16 август 2021 г. (16.06.2021 г.)Това означава, че последният път, когато двете папки са били последно променени, е повече от 90 дни от момента, когато изпълних командата.
- И накрая, за да изтриете тези празни папки, по-стари от 90 дни, подайте последната команда към командата Remove-Item PowerShell.
Как да използвате PowerShell за изтриване на папка с потребителски профил
За да изтриете папката с потребителски профил с командите в този раздел, ТРЯБВА отворете PowerShell като администратор . В противен случай може да получите съобщение за грешка за отказан достъпПървата стъпка да използвате PowerShell за изтриване на папката на потребителския профил е да определите пътя до папката на потребителя. PowerShell има променлива на околната среда, която връща пътя към инсталационната директория на Windows.
Променливата е…
|_+_|Тази команда връща път като C:WINDOWS. Междувременно папката Users (която съдържа всички папки с потребителски профили) се намира в основата на устройството, където е инсталиран Windows.
В моя пример папката Users се намира в диск C:WINDOWS.
Въпреки това, за да върнете C: от C:WINDOWS, използвайте метода на разделяне, както е показано в командата по-долу.
|_+_|Командата връща C: и WINDOWS. Следващата стъпка е да върнете C: – това е първият елемент в масива.
За достъп до този елемент включете това [0] към последната команда, както е показано по-долу.
|_+_|Сега имаме C:
По-рано споменах, че всички потребителски профили се намират в папката Users. От последната команда ще добавя Users към връщането C:Users
|_+_|Сега имаме пълния път до папката Users.
В следващата команда ще използвам Get-ChildItem, за да изброя всички папки с потребителски профили в папката Users. Въпреки това, за да избегна грешки, първо ще запиша последната команда в променлива.
|_+_|Сега мога да използвам Get-ChildItem, за да върна всички папки с потребителски профили в папката Users. Ето командата:
|_+_|И резултатът в PowerShell...
Последният бит ще бъде предаването на последната команда към Remove-Item. Въпреки това, трябва да използвате параметъра Filter, за да изтриете само папката на потребителския профил, от която искате да се отървете.
В този пример искам да изтрия папката на потребителския профил, наречена victo, и всички нейни подпапки
Ето последната команда, която използва PowerShell за изтриване на папка с потребителски профил:
|_+_|След като изпълните тази команда, сега, ако изпълните командата по-долу, изтритият профил вече няма да бъде в списъка.
|_+_|
Как да използвате PowerShell за изтриване на папка от Appdata
PowerShell има две променливи на средата за папката AppData на влязъл потребител.
|_+_|Променливата на средата, която решите да използвате, зависи от местоположението на папката, която искате да изтриете. Ако обаче не сте сигурни в местоположението на папката, която искате да изтриете, можете да търсите и в двете места.
За да постигна това, ще запиша и двете променливи на средата в променлива, наречена $appdatafolders...
|_+_|След това ще използвам цикъла ForEach, за да проверя и двете места. Ето кода, който върши тази работа...
|_+_| Включих параметъра WhatIf, така че PowerShell да не изтрие папката. Вместо това PowerShell ще покаже действието, което е трябвало да извърши, ако параметърът WhatIf не е включен.Ето резултата от командата в PowerShell. Изображението отдясно на екранната снимка е папката в моята папка AppData.
Как да използвате PowerShell за изтриване на скрита папка
Командата Get-ChildItem има параметър, наречен Hidden. Ако искате да изброите скрити папки в определена папка, включете параметъра Hidden.
На моята екранна снимка по-долу имам 3 папки (не или са скрити).
За да демонстрирам как да използвам PowerShell за изтриване на скрити папки, ще скрия Textfiles3. Сега папката е скрита.
За да изброя скритата папка, ще изпълня командата по-долу...
|_+_|Както се очакваше, командата изброява само скритата папка.
За да изтрия скритата папка с PowerShell, сега ще препратя последната команда към командата Remove-Item.
|_+_|За да потвърдя, че папката е изтрита, активирах атрибута показване на скрити елементи във File Explorer.
Как да използвате PowerShell за изтриване на файлове, но запазване на структурата на папките
Може да има случаи, в които може да искате да изтриете всички файлове в папка, включително нейните подпапки, но да запазите структурата на папките.
За да постигнете това, трябва да изпълните командата Get-ChildItem и да посочите параметъра File. Когато използвате параметъра File, Get-ChildItem изброява само файлове в посочената папка.
За да демонстрирам как работи това, създадох структура на папките, показана на екранната снимка по-долу:
Както се вижда на екранната снимка, папка1 има две подпапки, папка2 и папка3. Освен това папка2 и папка3 имат някои файлове.
За да използвам Get-ChildItem за показване само на файлове в пътя, F:ITGFilesfolder1, ще изпълня командата по-долу:
|_+_|Командата показва само файлове в двата пътя, F:ITGFilesfolder1folder2 и Directory: F:ITGFilesfolder1folder3
И накрая, за да изтриете файловете, но да запазите структурата на папките, изведете последната команда към Remove-Item...
|_+_|Командата изтрива всички файлове, но оставя структурата на папките непокътната!
Как да използвате PowerShell за изтриване на папка с ключ в системния регистър
Командата за изброяване и изтриване на папка с ключ в системния регистър е същата команда, използвана за изтриване на нормални папки.
Ако сте чели това ръководство от самото начало, досега сме използвали две команди:
Get-ChildItem : използва се за изброяване на елементи в определен път
Премахни артикул : използва се за изтриване на файловете/папките, изброени от Get-ChildItem
Единствената разлика обаче е начинът, по който имате достъп до папки с ключ в системния регистър.
Има няколко начина за форматиране на ключ на системния регистър за използване в командите Get-ChildItem и Remove-Item. За този пример обаче ще използвам метода по-долу:
|_+_|В този пример искам да получа достъп до папката с ключ на системния регистър HKEY_CURRENT_USERControl PanelDesktop. Както можете да видите в командния формат по-горе, за да направя това, добавих думата регистър, последвана от две двоеточия, ::
За да научите повече за това как PowerShell работи с системния регистър на Windows, прочетете нашето ръководство – Как да използвате PowerShell за четене на стойността на системния регистър .
Премествайки примера към следващата стъпка, за да изброите елементите в горната папка с ключ на системния регистър, изпълнете командата по-долу:
|_+_|Командата показва всички папки с подключове в посочената папка с ключ на системния регистър.
Ако искам да изтрия определена папка, първо ще стартирам Get-ChildItem. След това ще препратя изхода към Select-Object
|_+_|Горната команда показва пълния път до всички подключове в моята оригинална папка с ключ на системния регистър:
След това, за да изтрия подключовете, ще препратя последната команда към Remove-Item. Въпреки това, за да изтрия конкретна папка с подключ, първо ще препратя последната команда към Where-Object и ще филтрирам по името на подключа, който искам да изтрия:
|_+_|Последната команда сега връща само указания път на папката на подключ на системния регистър.
И накрая, за да изтриете този подключ на папката с PowerShell, изведете последната команда към Remove-Item. Преди това обаче трябва да промените ключа на системния регистър и да го изпратите към Get-Item.
За да го улесня, ще запиша последната команда в променлива
|_+_|След това го форматирайте за команда Get-Item
|_+_|Накрая подайте пътя на форматирания ключ към Get-Item...
|_+_|Сега можем да изтрием стойността, като изпратим последната команда към Remove-Item (включих параметър whatif, защото НЕ искам да изтрия този ключ)
|_+_|И ето резултата…
Как да използвате PowerShell за изтриване на име на папка като
В хода на други примери в това ръководство показах как да използвате PowerShell за изтриване на име на папка с помощта на филтъра „Харесвам“. Също така, както вече беше показано в предишните примери, този филтър може да се приложи в командата Get-ChildItem или в командата Where-Object.
Например, за да изтрия всички файлове и папки с имена като файл в пътя F:ITGFiles, мога да използвам командата по-долу:
|_+_| За да работи филтърът, може да се наложи да използвате заместващ знак. В този пример използвам заместващия знак за звездичка.
Мога да постигна същия резултат, като прехвърля Get-ChildItem към Where-Object. След това извършете филтрирането в Where-Object.
|_+_|Командата връща същия резултат като последната команда!
Както и при други примери в това ръководство, за да изтриете папката, изведете изхода на която и да е от двете команди към Remove-Item.
Как да използвате PowerShell за изтриване на папки, по-големи от посочения размер
Ако искате да изтриете папки, по-големи от определен размер с PowerShell, първо трябва да изчислите размерите на папките в посочения път.
Трябва обаче да посочите пълния път до подпапките в указания път към папката. За да изброите пълния път до всички подпапки в пътя на папката, изпълнете команда, подобна на тази по-долу:
|_+_|Командата изброява пълните пътища до всички подпапки в пътя на папката, F:ITGFiles
Използвайки дълбочина параметър със стойност 0, вместо Рекурсия гарантира, че се връщат само подпапките от първо ниво.
Сега, когато имам пълния път до подпапката, ще използвам тази информация, за да изчисля размера на всяка подпапка. Въпреки това, за да имам пълния път до подпапките (изисква се, за да го изтрия по-късно) и размера, трябва да създам персонализиран скрипт.
Ето пълния скрипт:
|_+_|А ето и резултата от командата в PowerShell ISE.
Както можете да видите от екранната снимка, скриптът връща само един файл, който отговаря на критериите за размер (10 MB).
Очевидно имаме един последен бит, за да завършим задачата - изтриване на файла. За да изтрия файла, който отговаря на изискването за размер, промених оператора IF, както е показано в този скрипт...
|_+_|И така, ето последният скрипт, който изтрива папки, по-големи от определена стойност
|_+_| За да използвате скрипта, променете пътя F:ITGFiles в Get-ChildItem – ред 1. Също така променете размера на папката, която искате да изтриете – от 10 (в MB) на необходимия размер.Как да използвате PowerShell за изтриване на мрежова споделена папка
Процесът на използване на PowerShell за изтриване на мрежови папки не се различава от изтриването на локални папки. Единствената разлика е как посочвате мрежова папка.
В допълнение към начина, по който посочвате мрежова папка, трябва да имате и правилните разрешения. По-конкретно, трябва да имате разрешение за промяна на споделянето.
Освен това трябва да имате и разрешение за защита на Modify NTFS.
След като тези изисквания за разрешения са изпълнени, можете да получите достъп до мрежовата папка с командата Get-ChildItem. След това, за да изтриете папката, преведете изхода на Get-ChildItem към Remove-Item.
За да демонстрирам как да използвам PowerShell за изтриване на мрежова папка, ще използвам споделена папка, наречена TestShare. Папката се намира на моя Windows 11 тестов компютър, наречен ITGWIN11BETA.
За да изброя съдържанието на споделената мрежова папка, ще използвам командата Get-ChildItem, както е показано по-долу...
twitch tv няма да натоварва хром|_+_|
Точно като локална папка, командата изброява всички папки и подпапки в споделената мрежова папка.
От този момент можете да прехвърлите последната команда директно към Remove-Item. Като алтернатива можете да приложите някакъв филтър, преди да го прехвърлите към Remove-Item.
Например, ако искате да изтриете конкретна папка, можете да използвате Филтрирайте параметър в Get-ChildItem. Като алтернатива можете да пренасочите Get-ChildItem към Where-Object и да използвате Филтрирайте параметър в Where-Object.
Накрая, за да изтриете елемента в мрежовата споделена папка, подайте резултата към Remove-Item.
Как да използвате PowerShell за изтриване на папка или файл, започващ с
Ако искате да изтриете папки или файлове, започващи с определено име, можете да използвате Филтрирайте параметър в командлета Get-ChildItem за изброяване на файловете. След това ипе резултата към Remove-Item.
Като алтернатива можете да използвате Изтрий() Метод в Get-ChildItem.
За да илюстрирам този пример, ще изтрия всички файлове и папки, започващи с f на екранната снимка по-долу.
Както споменах по-рано, първата стъпка е да използвате командата Get-ChildItem с параметъра Filter. Ето примерна команда:
|_+_| Друга възможност може да бъде да изпратите Get-ChildItem към Where-Object и да извършите филтрирането в Where-Object.Командата изброява всички файлове, започващи с f. Вижте екранната снимка по-долу:
Последната стъпка за изтриване на всички папки и файлове, започващи с f, е прехвърлянето на изхода от
|_+_|Как да използвате PowerShell, за да изтриете папката SoftwareDistribution
Както може би вече знаете, Windows съхранява изтеглените актуализации в папката SoftwareDistribution. В идеалния случай няма да е необходимо да изтривате тази папка.
Ако обаче базата данни на Windows Update е повредена, един от начините да я поправите е да изтриете Разпространение на софтуер папка. Преди да направите това обаче, първо трябва да спрете Windows Update.
За да спрете услугата Windows Update, стартирайте PowerShell като администратор. След това изпълнете командата по-долу:
|_+_| Ако не спрете услугата Windows Update, НЯМА да можете да изтриете Разпространение на софтуер папкаСлед това, за да използвате PowerShell за изтриване на папката SoftwareDistribution, изпълнете командите по-долу:
|_+_|И накрая, за да пресъздадете папката SoftwareDistribution, рестартирайте услугата Windows Update
|_+_|Как да използвате PowerShell, за да изтриете файл или папка, след като ги компресирате
За да архивирате файл или папка, използвайте командата Compress-Archive, както е показано в примера по-долу:
|_+_| Променете LiteralPath към пътя на източника на файла или папката, които искате да архивирате. Също така променете DestinationPath на пътя, по който искате да запишете компресирания файл.След като архивирате файла, използвайте командата по-долу, за да го изтриете...
|_+_|Как да използвате PowerShell, за да изтриете файл или файл, след което да напишете отчет в регистрационен файл
Ако искате да използвате PowerShell, за да изтриете файл или папка, след което да докладвате за действията в регистрационен файл, първо трябва да дефинирате имената на регистрационните файлове.
В този пример искам да имам два регистрационни файла, 1 за регистриране на успех и втория за регистриране на грешки.
Обикновено обичам да създавам моите регистрационни файлове въз основа на дата. За този пример първо ще създам печат за дата и ще го запиша в променлива:
|_+_|След това ще създам два регистрационни файла въз основа на щампа за дата...
|_+_|Има едно липсващо парче – пътят към директорията за запазване на регистрационните файлове. За да добавя този бит, ще запиша пътя в променлива...
|_+_|След това добавете пътя към лог файловете по-горе...
|_+_|Последните две команди създават два лог файла. За подробности вижте екранната снимка по-долу…
След като създадох нашите регистрационни файлове, сега ще създам скрипт на PowerShell, който ще изтрие файлове и папки в определен път. След това напишете отчети в регистрационните файлове.
В този пример искам да изтрия файлове в папката WindowsTemp. Първата стъпка е да запишете пътя до тази папка в променлива...
|_+_|След това ще използвам Get-ChildItem, за да изброя съдържанието на папката и ще препратя изхода към Remove-Item.
Въпреки това, за да мога да уловя грешките, трябва да заложа цялата команда в Try, Catch.
Ето пълния скрипт…
|_+_| За да използвате скрипта, копирайте го в PowerShell ISE. След това променете променливата $Path на пътя на папката, която искате да изтриете. Също така променете $LogPath на пътя към папката, в която искате да запазите вашите регистрационни файлове.Това е всичко – нашето изчерпателно ръководство за използване на PowerShell за изтриване на файлове или папки! Надявам се да намерите ръководството за полезно.
Ако ви е било полезно, любезно гласувайте да до Беше ли тази публикация полезна? По-долу. Като алтернатива можете да споделите подробна обратна връзка с формуляра ОСТАВЕТЕ ОТГОВОР в края на тази страница.
И накрая, за повече ръководства за PowerShell с примери, посетете нашата страница с инструкции за Windows PowerShell. Може също да намерите нашите БЕЗПЛАТНИ ръководства за обучение за PowerShell полезни.


