كيفية حذف المجلدات أو الملفات باستخدام PowerShell

18 أغسطس 2021 10262 الآراء كيفية حذف المجلدات أو الملفات باستخدام PowerShell

هل تريد حذف الملفات والمجلدات باستخدام PowerShell ، لكن لا تعرف كيف؟ ستمنحك هذه المقالة دليلًا تفصيليًا حول كيفية استخدام PowerShell لحذف مجلد أو ملف أو جميع المجلدات والملفات في مسار محدد.

يعلمك منشور المدونة هذا طرقًا مختلفة لحذف المجلدات والملفات باستخدام PowerShell. إذا كان هذا يبدو مثيرا للاهتمام ، استمر في القراءة!

يبدأ الدليل بشرح طريقتين لاستخدام PowerShell لحذف المجلدات والملفات. بعد ذلك ، في القسم الثاني ، ستتعرف على كيفية إصلاح الأخطاء الشائعة المرتبطة بحذف الملفات والمجلدات باستخدام PowerShell.

أخيرًا ، يضم الدليل أكثر من 20 مثالًا.

تصفح مواضيع المنشور

طريقتان لحذف مجلد أو ملف باستخدام PowerShell

يوفر PowerShell طريقتين لحذف العناصر. يمكنك حذف مجلد أو ملف باستخدام PowerShell Delete Method.

ثانيًا ، يمكنك استخدام Remove-Item لحذف العناصر في PowerShell. في القسمين الفرعيين التاليين من هذا القسم ، ستتعلم كيفية استخدام هذه الطرق.

الطريقة الأولى: استخدام بوويرشيل حذف() طريقة حذف مجلد أو ملف

لكي يقوم PowerShell بحذف مجلد ، تحتاج إلى Get-ChidItem Cmdlet. Get-ChildItem يقوم الأمر Cmdlet بإرجاع العناصر والعناصر الفرعية في موقع محدد.

لسرد كافة الملفات والمجلدات الموجودة في المسار م: التقارير ، قم بتشغيل الأمر أدناه:

Get-ChildItem E:
eports

هذه هي النتيجة في PowerShell ...

كيفية استخدام Powershell حذف ()

هذا الأمر له طريقة تسمى حذف . يمكنك استعمال ال حذف طريقة حذف المجلدات والملفات.

للاطلاع على الطرق المتاحة في الأمر أعلاه ، قم بتمرير الأمر إلى Get-Member Cmdlet.

Get-ChildItem E:
eports | Get-Member

أعاد الأمر نوعين من الخصائص. واحد و System.IO.DirectoryInfo (انظر الصورة الأولى أدناه). اثنين و System.IO.FileInfo . الأول يتعلق بالمجلدات الموجودة في المسار بينما يتعلق الثاني بالملفات.

انظر عن كثب إلى الصورتين. لاحظ أن لكل منهم طريقة تسمى حذف . يمكنك استعمال ال حذف الطريقة في PowerShell لحذف مجلد أو ملف.

في القسم الفرعي التالي ، سأوضح كيفية الاستخدام حذف طريقة.

كيف تستعمل حذف () طريقة في Powershell لحذف مجلد أو ملف

بناء جملة حذف الطريقة هي:

Object.Delete()

هدف هو مجلد تفاصيل الملف الذي تم إرجاعه بواسطة Get-ChidItem Cmdlet. بالإضافة إلى، حذف هي الطريقة التي يتبعها عادةً عامل التشغيل ().

لتسهيل فهم أمر بناء الجملة أعلاه ، يوجد هنا أمر Get-ChildItem الأصلي:

Get-ChildItem E:
eports

والنتيجة ...

كيفية استخدام Powershell حذف ()

بناءً على ما شرحته حتى الآن ، من الناحية النظرية ، يمكنك استخدام طريقة حذف PowerShell لحذف المجلد المسمى التقارير عن طريق تشغيل الأمر أدناه:

(Get-ChildItem E:
eports).Delete()

ومع ذلك ، يقوم الأمر الأخير بإرجاع رسالة الخطأ الدليل ليس فارغًا.

لحل هذه المشكلة ، أحتاج إلى أمر يقوم بإرجاع جميع الملفات والمجلدات والمجلدات الفرعية في المسار. ثم أحتاج إلى توجيه النتيجة إلى حلقة aForEach.

هذا هو الأمر المعدل:

Get-ChildItem E:
eports -Include *  .  * -Recurse | ForEach { $_.Delete()}

هذا هو الأمر في بوويرشيل. تم حذف جميع الملفات من المسار المحدد.

يقوم الأمر الأخير بحذف الملفات الموجودة في المجلد المحدد ومجلداته الفرعية. ومع ذلك ، فإنه لا يحذف المجلدات.

لحذف المجلدات ، قم بتشغيل الأمر أدناه:

Get-ChildItem E:
eports | ForEach { $_.Delete()}

لتأكيد ذلك م: التقارير فارغ الآن ، سأقوم بتشغيل الأمر Get-ChildItem مرة أخرى.

Get-ChildItem E:
eports

لا يعود أي شيء!

قبل أن أنتقل إلى القسم التالي ، اسمحوا لي أن أشرح كيف أدى هذا الأمر إلى حذف جميع الملفات والمجلدات الفرعية.

Get-ChildItem E:
eports -Include *  .  * -Recurse | ForEach { $_.Delete()}

Get-ChildItem له معلمتان تسمى تضمن و يعيد تنفيذ . في الأمر ، اعتدت -تضمن *.* لإخبار PowerShell بتضمين كل ملف في النتيجة.

يعيد تنفيذ ، من ناحية أخرى ، يخبر Get-ChildItem بإرجاع جميع المجلدات والمجلدات الفرعية.

في الجزء الثاني من الأمر ، قمت بضغط Get-ChildItem على جملة ForEach. حلقات ForEach عبر جميع الكائنات التي تم إرجاعها بواسطة Get-ChildItem ويستخدم ملحق حذف طريقة حذفها.

كما ذكرت بالفعل عندما قدمت هذا القسم ، يحتوي PowerShell على أمر cmdlet يسمى إزالة بند على وجه التحديد. يمكنك أيضًا استخدام PowerShell Cmdlet لحذف مجلد أو ملف.

يغطي القسم التالي كيفية الاستخدام إزالة بند . في تجربتي ، باستخدام إزالة بند أفضل من الاستخدام حذف() طريقة.

الطريقة الثانية: استخدام بوويرشيل إزالة بند أمر Cmdlet لحذف مجلد أو ملف

لحذف ملف أو مجلد بامتداد إزالة بند ما زلت بحاجة إلى استخدام PowerShell Cmdlet ، Get-ChildItem. ثم توجيه النتيجة إلى إزالة بند .

يمكنك الجري إزالة بند بدون Get-ChildItem . ومع ذلك ، من خلال تجربتي ، في معظم الحالات ، من الأفضل إدراج العنصر مع Get-ChildItem . بعد ذلك ، قم بتوصيل الإخراج إلى إزالة بند .

في المثال الأول الخاص بي في هذا القسم ، أريد استخدام PowerShell لحذف المجلد المسمى ITGServer2. انظر اللقطة في الاسفل.

الطريقة 2: استخدم Powershell Remove-Item Cmdlet لحذف مجلد أو ملف

إليك أمر PowerShell الذي سيحذف المجلد ...

Get-ChildItem E:
eports -Recurse -Filter 'ITGServer2' | Remove-Item -Force -Recurse

بعد تشغيل الأمر أعلاه ، اختفى المجلد!

الطريقة 2: استخدم Powershell Remove-Item Cmdlet لحذف مجلد أو ملف

في المثال الثاني ، أريد حذف المجلدات والمجلدات الفرعية في E: Reports. الأمر أدناه سيؤدي المهمة ...

 Get-ChildItem E:
eports -Recurse | ForEach { Remove-Item $_.FullName -Force -Recurse } 

بعد تشغيل الأمر الأخير ، اختفت جميع المجلدات الموجودة في المجلد المحدد!

الطريقة 2: استخدم Powershell Remove-Item Cmdlet لحذف مجلد أو ملف

كيفية إصلاح الأخطاء الشائعة باستخدام Powershell حذف المجلد أو الملف

كيفية إصلاح الأخطاء الشائعة باستخدام Powershell حذف المجلد أو الملف

عند تشغيل الأمر Remove-Item PowerShell لحذف مجلد أو ملف ، فقد يُرجع بعض الأخطاء. يغطي هذا القسم بعض هذه الأخطاء وكيفية إصلاحها.

أشعر أنه من الأفضل مناقشة الحلول لهذه الأخطاء الشائعة قبل أن نتعمق في بعض أمثلة مسؤول النظام الواقعية حول كيفية استخدام PowerShell لحذف المجلدات أو الملفات.

كيفية إصلاح Powershell حذف المجلد أو رفض الوصول إلى الملف خطأ

إذا قمت بتشغيل 'إزالة العنصر' لحذف ملف أو مجلد وتلقيت رسالة خطأ 'تم رفض الوصول' ، فجرّب ما يلي:

  1. تغيير مالك الملف أو المجلد - استخدم الرموز أدناه لتغيير مالك الملف أو المجلد إلى المسؤول المحلي

لتشغيل هذا الأمر ، افتح PowerShell كمسؤول ، وإلا سيفشل الأمر الأخير.

$CurrentACL = Get-ACL F:ITGFilesTextfiles $AdminGroup = New-Object System.Security.Principal.NTAccount('Builtin', 'Administrators') $CurrentACL.SetOwner($AdminGroup) Set-Acl -Path F:ITGFilesTextfiles -AclObject $CurrentACL
قم بتغيير مسار المجلد ، F: ITGFiles Textfiles إلى المسار الكامل للملف أو المجلد

بمجرد تغيير المالك إلى المسؤول المحلي ، حاول تشغيل حذف الملف أو المجلد مرة أخرى باستخدام PowerShell. إذا لم ينجح الأمر ، فجرّب هذه الإصلاحات.

  1. أضف ال فرض المعلمة لإزالة العنصر
  2. جرب طريقة الحذف () بدلاً من ذلك. إذا كنت لا تعرف كيفية استخدام طريقة حذف PowerShell () ، فراجع قسم كيفية استخدام طريقة الحذف () في Powershell لحذف مجلد أو ملف (يفتح الرابط في علامة تبويب متصفح مختلفة) في هذا الدليل.

كيفية إصلاح Powershell Delete Folder لا يمكن إزالته لأنه ليس خطأ فارغ

إذا تلقيت لا يمكن إزالتها لأنها ليست فارغة خطأ عند تشغيل الأمر:

Remove-Item E:
eports -Recurse

جرب استخدام Get-ChildItem مع المعلمة Recurse. ثم ، قم بتوجيهه إلى Remove-Item باستخدام ملف فرض و يعيد تنفيذ المعلمات.

هنا أمر عينة:

 Get-ChildItem E:
eports -Force -Recurse | Remove-Item -Force -Recurse

بدلاً من ذلك ، يمكنك تشغيل Get-ChildItem وتحديد العلامات النجمية خلف الشرطة المائلة الأخيرة في المسار. هذا يحذف كل محتويات المجلد.

على سبيل المثال ، إذا قمت بتشغيل الأمر ...

Remove-Item E:
eports -Force -Recurse

... وتلقي لا يمكن إزالتها لأنها ليست فارغة ، لإصلاح المشكلة ، سأقوم أولاً بتشغيل الأمر أدناه:

 Get-ChildItem E:
eports* -Force -Recurse | Remove-Item -Force -Recurse

يقوم الأمر الأخير بحذف العناصر الموجودة في E: Reports فقط. أخيرًا ، لحذف المجلد (الذي أصبح فارغًا الآن) ، سأقوم بتشغيل الأمر أدناه ...

Remove-Item E:
eports -Force -Recurse

كيفية إصلاح Powershell حذف المجلد المستخدم بواسطة خطأ آخر في العملية

كيفية إصلاح Powershell حذف المجلد

إذا تلقيت Remove-Item بإرجاع رسالة الخطأ لأنه قيد الاستخدام من قبل عملية أخرى ، فأنت بحاجة إلى تضمين معلمة Force.

هذا هو الأصل الذي أرجع رسالة الخطأ ...

Get-ChildItem E:
eportsfolder-names.txt | Remove-Item

لإصلاح هذه المشكلة ، قم بتشغيل الأمر أدناه لملف:

Get-ChildItem E:
eportsfolder-names.txt | Remove-Item -Force -Recurse

قام الأمر الأخير بحذف الملف بنجاح ...

كيفية إصلاح Powershell حذف المجلد أو مجلد الملف أو اسم الملف خطأ طويل جدًا

يبدو أن هذا قيد معروف في PowerShell.

ومع ذلك ، لإصلاح هذه المشكلة ، يمكنك استخدام ملحق لك الأمر cmd. بعد ذلك ، قم بتمرير النتيجة إلى الأمر Remove-Item.

هنا مثال…

dir 'E:
eports
eports - Copy
eports - Copy
eports - Copy
eports - Copy
eports - Copy
eports - Copy
eports - Copy
eports - Copy' | Remove-Item -Force -Recurse
الأمر dir هو المكافئ cmd لـ Get-ChildItem الخاص بـ PowerShell.

كيفية إصلاح Powershell ، تم رفض الوصول إلى المجلد إلى المسار خطأ

يلقي الأمر PowerShell Remove-Item رسالة خطأ Access To The Path Is Denied إذا حاولت حذف مجلد ليس لديك إذن بحذفه.

سبب ظهور رسالة الخطأ هذه هو أنه لا يمكنك الوصول إلى المجلد. قبل تشغيل أمر إزالة العنصر ، قم بتشغيل الأوامر التالية لمنح المسؤولين المحليين حق الوصول إلى المجلد.

يفترض هذا الإصلاح أن الحساب الذي استخدمته لتسجيل الدخول عضو في مجموعة المسؤولين المحليين. قبل تشغيل الأمر أدناه في PowerShell ISE ، قم بتغيير المسار F: ITGFiles Textfiles إلى مسار المجلد الذي تحاول حذفه.
$CurrentACL = Get-ACL F:ITGFilesTextfiles  
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule('BUILTINAdministrators','FullControl','Allow')
$CurrentACL.SetAccessRule($AccessRule)
$CurrentACL | Set-Acl F:ITGFilesTextfiles

بمجرد الانتهاء من تشغيل البرنامج النصي أعلاه ، أعد تشغيل أمر إزالة العنصر.

المزيد من Powershell حذف مجلد أو أمثلة على الملف

المزيد من Powershell حذف مجلد أو أمثلة على الملف

يغطي هذا القسم الأخير من الدليل أمثلة متعددة حول كيفية استخدام PowerShell لحذف الملفات أو المجلدات.

كيفية حذف مجلد أو ملف باستخدام PowerShell إذا كان موجودًا

نظرًا لأن هذا المثال له شرط - في حالة وجود المجلد أو الملف - يتحقق المسار الأول للأمر من وجود العنصر.

يمكنك استعمال ال مسار الاختبار أمر للتحقق من وجود مجلد أو ملف. بعد ذلك ، يمكنك استخدام العبارة الشرطية IF لإزالة المجلد أو الملف إذا كان موجودًا.

يمكننا دمج كلا الأمرين في كتلة عبارة IF ...

في هذا المثال ، أريد حذف مجلد يسمى ITGServer في المسار F: ITGFiles Textfiles - إذا كان المجلد موجودًا.

ها هو الأمر ...

IF (Test-Path F:ITGFilesTextfilesITGServer) { Remove-Item F:ITGFilesTextfilesITGServer } Else { Write-Host 'The folder F:ITGFilesTextfilesITGServer does not exist' }

في هذا المثال ، يوجد هذا المجلد لذا تم حذفه. ومع ذلك ، إذا جربنا الأمر بملف غير موجود ، فسنستقبل الرسالة في ملف آخر كتلة من بيان IF.

كيفية حذف مجلد ومجلداته الفرعية باستخدام PowerShell

لحذف مجلد وكافة المجلدات الفرعية ، قم بتشغيل ملف إزالة بند الأمر مع يعيد تنفيذ و فرض المعلمات.

هنا مثال…

Remove-Item F:ITGFilesTextfilesITGServer -Recurse -Force

كيفية حذف مجلد أو ملف أقدم من x يوم (أو استنادًا إلى التاريخ) باستخدام PowerShell

في هذا المثال ، نظرًا لأننا نريد حذف الملفات أو المجلدات الأقدم من x يومًا ، فإن الخطوة الأولى هي الحصول على مرجع الأيام. يتم ذلك باستخدام الأمر Get-Date.

ومع ذلك ، نظرًا لأننا نريد حذف العناصر الأقدم من x يومًا ، يتعين علينا تحديد x من الأيام كقيمة سالبة. على سبيل المثال ، لحذف جميع الملفات أو المجلدات التي مضى عليها أكثر من 7 أيام ، احصل على مرجع الأيام بالأمر أدناه:

$DaysRef = (Get-Date).AddDays('-7')

ثم استخدم ملف Get-ChildItem الأمر للحصول على LastWriteTime خاصية العنصر. ال LastWriteTime الخاصية تسجل التاريخ الأخير الذي تم فيه تعديل المجلد أو الملف.

بالإضافة الى LastWriteTime الخاصية ، يقوم الأمر Get-ChildItem بإرجاع خاصية أخرى تسمى حاوية PSIs . تميز الخاصية PSIsContainer ملف من مجلد.

إذا حاوية PSIs صحيح ، فهذا يعني أن العنصر عبارة عن مجلد. من ناحية أخرى ، إذا حاوية PSIs خطأ ، فهذا يعني أن العنصر عبارة عن ملف.

قبل أن أقدم خاصية LastWriteTime ، اسمح لي أولاً بتشغيل أمر Get-ChildItem والتصفية حسب خاصية PSIsContainer:

Get-ChildItem F:ITGFilesTextfiles | Where-Object {$_.PSIsContainer -eq $TRUE}

أعاد هذا الأمر كائنًا واحدًا يسمى مجموعة التقنيات المتكاملة (ITG) لأن هذا هو المجلد الوحيد في المسار F: ITGFiles Textfiles.

بدلاً من ذلك ، لسرد الملفات فقط في المسار ، قم بتشغيل الأمر أدناه:

Get-ChildItem F:ITGFilesTextfiles | Where-Object {$_.PSIsContainer -eq $FALSE}

هذه المرة ، لأنني حددتها بواسطة $ _. PSIsConta ينزل -Eq $ FALSE ، يقوم PowerShell بإرجاع كافة المجلدات بخلاف المجلدات.

الآن بعد أن فهمت كيفية سرد المجلدات أو الملفات في مجلد ، دعنا نقدم خاصية LastWriteTime. كما ذكرت سابقًا ، يتم تسجيل التاريخ والوقت الأخير الذي تم فيه تعديل العنصر في خاصية LastWriteTime.

تتضمن هذه الأوامر خاصية LastWriteTime:

Get-ChildItem F:ITGFilesTextfiles | Where-Object {$_.PSIsContainer -eq $TRUE -AND $_.LastWriteTime -le $DaysRef}  
Get-ChildItem F:ITGFilesTextfiles | Where-Object {$_.PSIsContainer -eq $FALSE -AND $_.LastWriteTime -le $DaysRef}

يقوم الأمر الأول بإرجاع كافة المجلدات التي تم تعديلها مؤخرًا قبل مرجع اليوم المحفوظ في متغير $ DaysRef. في هذا المثال ، مرجع اليوم هو 7 أيام.

على العكس من ذلك ، يُرجع الأمر الثاني جميع الملفات التي تم تعديلها في آخر x يومًا - حيث x يومًا تساوي 7 في هذا المثال.

المرحلة الثانية والأخيرة من هذا المثال التي تستخدم PowerShell لحذف مجلدات الملفات الأقدم من x يومًا هي توجيه أمر Where-Object إلى Remove-Item.

البرنامج النصي أدناه يكمل مهمة حذف الملفات والمجلدات ...

Get-ChildItem F:ITGFilesTextfiles | Where-Object {$_.PSIsContainer -eq $TRUE -AND $_.LastWriteTime -le $DaysRef} | Remove-Item -Recurse -Force  
Get-ChildItem F:ITGFilesTextfiles | Where-Object {$_.PSIsContainer -eq $FALSE -AND $_.LastWriteTime -le $DaysRef} | Remove-Item -Recurse -Force
إذا لم يفي أي ملف أو مجلد بمعايير LastWriteTime ، فلن يتم حذف أي منها.

كيف تستخدم بوويرشيل لحذف محتويات المجلد فقط

في هذا المثال ، سأحذف محتوى المجلد F: ITGFiles ولكن ليس المجلد نفسه.

إذا كنت تريد حذف محتويات المجلد فقط مع الاحتفاظ بالمجلد ، فقم بتشغيل الأمر Remove-Item كما هو موضح في المثال أدناه:

Remove-Item F:ITGFilesfolder* -Recurse -Force

الحيلة هي إضافة علامة النجمة بعد الشرطة المائلة الأخيرة في نهاية مسار المجلد.

ال يعيد تنفيذ المعلمة يحذف جميع المجلدات والمجلدات الفرعية في المسار المحدد. في هذا المثال ، F: ITGFiles folder *

كيف تستخدم PowerShell لحذف المجلد والمحتويات دون تأكيد أو مطالبة

الحيلة لحذف مجلد ومحتويات دون مطالبتك بالتأكيد هي إضافة ملف فرض و تأكيد: $ false المعلمات إلى إزالة بند يأمر.

إذا قمت بتشغيل الأمر أدناه دون إضافة ملف تأكيد: $ false المعلمة ، قد أؤكد أنني أريد حذف المجلد وجميع محتوياته.

Remove-Item E:
eports -Recurse -Force

ومع ذلك ، إذا كنت لا أرغب في تلقي مطالبة التأكيد هذه ، فسوف أقوم بتضمين المعلمة Confirm: $ false.

Remove-Item E:
eports -Force -Recurse -Confirm:$false

يجب تشغيل الأمر دون طلب تأكيد الإجراء. لاحظ أيضًا أن المعلمة التي توقف مطالبة التأكيد هي تأكيد: $ false .

إذا استمر الأمر الأخير في المطالبة بالتأكيد ، فقم أولاً بتشغيل ملف Get-ChildItem يأمر. بعد ذلك ، قم بتوجيه الإخراج إلى الأمر Remove-Item كما هو موضح أدناه:

Get-ChildItem -Path E:
eports | Remove-Item -Force -Recurse -Confirm:$false

لسوء الحظ ، لا يؤدي الأمر الأخير إلى حذف المجلد الأصل. لحذف المجلد الأصل وجميع محتوياته ، أضف المعلمة -filter إلى الأمر Get-ChildItem كما هو موضح في هذا الأمر:

Get-ChildItem -Path E:
eports -Filter 'folder' | Remove-Item -Force -Recurse -Confirm:$false

كيف تستخدم بوويرشيل لحذف مجلد أو ملف لإعادة تدوير سلة

إذا قمت بحذف مجلد أو ملف باستخدام الأمر Remove-Item ، فسيتم حذفه نهائيًا. بمعنى آخر ، لا يتم نقل المجلد إلى سلة المحذوفات.

لسوء الحظ ، لا يوجد PowerShell Cmdlet لحذف مجلد أو ملف إلى سلة المحذوفات. كنت أحاول إنشاء وظيفة مخصصة لهذه المهمة. ومع ذلك ، وجدت وظيفة موجودة تم إنشاؤها بواسطة ملف stackoverflow.com مساهم.

لإتاحته لقرائنا ، قمت بتحميل نسخة من الوظيفة إلى S Zone. لتنزيل الوظيفة واستخدامها ، اتبع الخطوات التالية:

  1. انقر فوق تنزيل Remove-ItemToRecycleBin.zip لتنزيل الوظيفة
  2. بعد ذلك ، قم بفك ضغط الملف المضغوط الذي تم تنزيله. عند فك ضغط الملف ، سيتم إنشاء مجلد يسمى Remove-ItemToRecycleBin.
  3. أخيرًا ، انسخ المجلد إلى مجلد قالب ملف تعريف Windows 10 PowerShell. يوجد المجلد في المسار أدناه
C:Users\DocumentsWindowsPowerShellModules
هو اسم ملف تعريف Windows 10 الخاص بك. يوجد هذا عادةً في C: Users . ومع ذلك ، إذا لم يكن في محرك الأقراص C ، فابحث عن محرك الأقراص D أو E.

بمجرد نسخ مجلد الوحدة النمطية الخاص بك ، يمكنك استخدامه مثل أي أمر PowerShell آخر. لتوضيح كيفية عملها ، سأحذف E: Reports إلى سلة المحذوفات.

قبل أن أقوم بتشغيل الأمر ، إليك لقطة شاشة لسلة المحذوفات الفارغة.

كيف تستخدم بوويرشيل لحذف مجلد أو ملف لإعادة تدوير سلة

الآن ، لاستخدام PowerShell لحذف المجلد ، E: تقارير إلى سلة المحذوفات ، سأقوم بتشغيل الأمر أدناه:

Remove-ItemToRecycleBin -LiteralPath E:
eports

بعد تشغيل الأمر أعلاه ، سيتم نقل مجلد التقارير إلى سلة المحذوفات. انظر اللقطة في الاسفل…

كيفية استخدام PowerShell لحذف مجلد أو ملف واستبعاد المجلدات أو الملفات الأخرى

يحتوي الأمر Remove-Item على ملف استبعاد معامل. تُستخدم هذه المعلمة لاستبعاد مجلد أو ملف لا ترغب في حذفه.

هنا مثال. أريد حذف كافة المجلدات الموجودة في المسار ، F: ITGFiles Textfiles5. ومع ذلك ، لا أريد حذف folder3.

كيفية استخدام PowerShell لحذف مجلد أو ملف واستبعاد المجلدات أو الملفات الأخرى

كما ترى من لقطة الشاشة أعلاه ، يحتوي المجلد على مجلدات وملفات.

لحذف المجلدات فقط ، يجب أولاً استخدام الأمر Get-ChildItem لسرد كافة العناصر الموجودة في المسار. بعد ذلك ، قم بتوجيه الإخراج إلى Where-Object والتصفية بواسطة خاصية PSIsContainer.

Get-ChildItem F:ITGFilesTextfiles5 | Where-Object {$_.PSIsContainer -eq $TRUE} | Remove-Item -Recurse -Force -Exclude 'folder3'

بعد تشغيل الأمر الأخير ، يتم حذف جميع المجلدات وليس المجلد 3. أيضًا ، لاحظت أنه لم يتم حذف الملفات الموجودة في F: ITGFiles Textfiles5.

سبب حذف المجلدات فقط هو أنه داخل ملف أين الكائن تمت تصفيته حسب {$ _. PSIsContainer -eq $ TRUE}. تحدد الخاصية PSIsContainer أن الكائن عبارة عن مجلد.

عند الانتقال ، يحتوي عنصر Remove-Item أيضًا على معلمة تسمى Include. تقوم هذه المعلمة بتنفيذ الإجراء المعاكس لمعلمة الاستبعاد.

يمكنني تحقيق نفس النتيجة مثل الأمر الأخير عن طريق استبدال الاستبعاد بالتضمين. ومع ذلك ، على عكس الأمر السابق ، سأقوم الآن بإدراج المجلدات التي أريد حذفها.

إليك نموذج لأمر يحذف المجلد 1 فقط من F: ITGFiles Textfiles5.

Get-ChildItem F:ITGFilesTextfiles5 | Where-Object {$_.PSIsContainer -eq $TRUE} | Remove-Item -Recurse -Force -Include 'folder1'

بعد تشغيل الأمر السابق ، ستلاحظ أنه تم حذف المجلد 1 فقط.

إذا كنت تريد حذف الملفات بدلاً من المجلدات ، فقم بتغيير $ _. PSIsContainer -eq $ TRUE إلى $ _. PSIsContainer -eq $ FALSE

كيفية استخدام PowerShell لحذف مجلد حتى لو لم يكن فارغًا

إذا كنت تريد حذف مجلد باستخدام PowerShell - حتى إذا لم يكن المجلد فارغًا - فقم بتضمين ملف فرض و يعيد تنفيذ المعلمات. هنا مثال.

Remove-Item F:ITGFilesTextfiles5 -Recurse -Force

كيفية استخدام PowerShell لحذف المجلدات الفارغة التي يزيد عمرها عن X يوم

اتبع الخطوات أدناه لاستخدام PowerShell لحذف المجلدات الفارغة الأقدم من x يوم ...

في هذا المثال ، أرغب في حذف المجلدات الأقدم من 90 يومًا من ملف تعريف Windows 10 الخاص بي ، C: Users VictorA.

  1. استخدم Get-ChildItems لسرد المجلدات فقط في المسار المحدد:
Get-ChildItem -Path C:UsersVictorA -Directory

يسرد الأمر جميع المجلدات في المسار المحدد. إذا كنت تتذكر ، في الأوامر السابقة في هذا الدليل ، لإرجاع المجلدات التي استخدمناها أين الكائن للتصفية حسب حاوية PSIs منشأه. ومع ذلك ، قررت تحقيق نفس النتيجة باستخدام الدليل معلمة Get-ChildItem .

  1. ثم قم بتوجيه نتيجة الأمر Get-ChildItem إلى Where-Object. ضمن الأمر Where-Object ، أضف عامل تصفية يقوم بإرجاع المجلدات الفارغة فقط. ها هو الأمر ...
Get-ChildItem -Path C:UsersVictorA -Directory | Where-Object { $_.GetFileSystemInfos().Count -eq 0 }
  1. الآن ، نحتاج إلى إضافة المسار الذي يقوم بإرجاع المجلدات في القائمة السابقة التي مضى عليها أكثر من 90 يومًا. هذا ينطوي على أمرين.

في الأمر الأول ، سأستخدم Get-Date لتحديد تاريخ الفترة الزمنية. في المثال ، قبل 90 يومًا. لتسهيل الأمر ، سأحفظ النتيجة في متغير يسمى $ DaysRef.

$DaysRef = (Get-Date).AddDays('-30')

بعد ذلك ، في الأمر الثاني ، سأقوم بتضمين عامل تصفية آخر في جزء Where-Object من الأمر الأخير.

Get-ChildItem -Path C:UsersVictorA -Directory | Where-Object { ($_.GetFileSystemInfos().Count -eq 0) -AND ($_.LastWriteTime -le $DaysRef) }

ها هي نتيجة الأمر الأخير ...

كيفية استخدام PowerShell لحذف المجلدات الفارغة التي يزيد عمرها عن X يوم

كما ترى ، يتم إرجاع مجلدين فارغين فقط بواسطة الأمر الأخير. قمت بتشغيل هذا الأمر في 4 أغسطس 2021. كما ترون ، فإن LastWriteTime من المجلدين بتاريخ 16/06/2021 16:29.

للقراء في الولايات المتحدة ، هذا التاريخ هو 16 أغسطس 2021 (06/16/2021)

هذا يعني أن آخر مرة تم فيها تعديل المجلدين هي أكثر من 90 يومًا من وقت تشغيل الأمر.

  1. أخيرًا ، لحذف هذه المجلدات الفارغة التي مضى عليها أكثر من 90 يومًا ، قم بتمرير الأمر الأخير إلى الأمر Remove-Item PowerShell.
Get-ChildItem -Path C:UsersVictorA -Directory | Where-Object { ($_.GetFileSystemInfos().Count -eq 0) -AND ($_.LastWriteTime -le $DaysRef) } | Remove-Item -Force -Recurse

كيفية استخدام بوويرشيل لحذف مجلد ملف تعريف المستخدم

لحذف مجلد ملف تعريف المستخدم بالأوامر الواردة في هذا القسم ، يجب عليك افتح PowerShell كمسؤول . خلاف ذلك ، قد تتلقى رسالة خطأ رفض الوصول

تتمثل الخطوة الأولى لاستخدام PowerShell لحذف مجلد ملف تعريف المستخدم في تحديد المسار إلى مجلد المستخدم. يحتوي PowerShell على متغير بيئي يقوم بإرجاع المسار إلى دليل تثبيت Windows.

المتغير ...

$Env:WinDir

يقوم هذا الأمر بإرجاع مسار مثل C: WINDOWS. وفي الوقت نفسه ، يوجد مجلد المستخدمين (الذي يحتوي على جميع مجلدات ملفات تعريف المستخدم) في جذر محرك الأقراص حيث تم تثبيت Windows.

في المثال الخاص بي ، يوجد مجلد Users في محرك الأقراص C: WINDOWS.

ومع ذلك ، لإرجاع C: ، من C: WINDOWS ، استخدم طريقة الانقسام كما هو موضح في الأمر أدناه.

($Env:WinDir).Split('')

يقوم الأمر بإرجاع C: و WINDOWS. الخطوة التالية هي إرجاع C: - هذا هو العنصر الأول في المصفوفة.

كيفية استخدام بوويرشيل لحذف مجلد ملف تعريف المستخدم

للوصول إلى هذا العنصر ، قم بتضمين هذا [0] في الأمر الأخير كما هو موضح أدناه.

(($Env:WinDir).Split(''))[0]

الآن ، لدينا C:

كيفية استخدام بوويرشيل لحذف مجلد ملف تعريف المستخدم

لقد ذكرت سابقًا أن جميع ملفات تعريف المستخدمين موجودة في مجلد المستخدمين. من الأمر الأخير ، سأضيف Users إلى الإرجاع C: Users

(($Env:WinDir).Split(''))[0] + 'Users'

الآن ، لدينا المسار الكامل لمجلد المستخدمين.

في الأمر التالي ، سأستخدم Get-ChildItem لسرد جميع مجلدات ملف تعريف المستخدم في مجلد المستخدمين. ومع ذلك ، لتجنب الأخطاء ، سأقوم أولاً بحفظ الأمر الأخير في متغير.

$UsersFolder = (($Env:WinDir).Split(''))[0] + 'Users'

الآن ، يمكنني استخدام Get-ChildItem لإرجاع جميع مجلدات ملف تعريف المستخدم في مجلد المستخدمين. هذا هو الأمر:

Get-ChildItem $UsersFolder

والنتيجة في PowerShell ...

كيفية استخدام بوويرشيل لحذف مجلد ملف تعريف المستخدم

سيكون البت الأخير هو توجيه آخر أمر إلى Remove-Item. ومع ذلك ، تحتاج إلى استخدام المعلمة Filter لحذف مجلد ملف تعريف المستخدم الذي تريد التخلص منه فقط.

في هذا المثال ، أرغب في حذف مجلد ملف تعريف المستخدم المسمى victo وجميع مجلداته الفرعية

إليك الأمر الأخير الذي يستخدم PowerShell لحذف مجلد ملف تعريف المستخدم:

Get-ChildItem $UsersFolder -Filter 'victo' | Remove-Item -Force -Recurse

بعد تشغيل هذا الأمر ، الآن إذا قمت بتشغيل الأمر أدناه ، فلن يتم سرد ملف التعريف المحذوف.

Get-ChildItem $UsersFolder

كيفية استخدام بوويرشيل لحذف مجلد من بيانات التطبيق

يحتوي PowerShell على متغيرين للبيئة لمجلد AppData الخاص بالمستخدم الذي قام بتسجيل الدخول.

$env:APPDATA - is the environment variable for the 'roaming' appdata folder  
$env:LOCALAPPDATA - is the 'local' appdata folder

يعتمد متغير البيئة الذي تقرر استخدامه على موقع المجلد الذي تريد حذفه. ومع ذلك ، إذا لم تكن متأكدًا من موقع المجلد الذي تريد حذفه ، فيمكنك البحث في كلا الموقعين.

لتحقيق ذلك ، سأحفظ كلا متغيري البيئة في متغير يسمى $ appdatafolders ...

$appdatafolders = $env:APPDATA, $env:LOCALAPPDATA

بعد ذلك ، سأستخدم حلقة ForEach للتحقق من كلا الموقعين. هذا هو الكود الذي يقوم بهذه المهمة ...

ForEach ($appdata in $appdatafolders) Get-ChildItem $appdata -Recurse -Filter 'testfolder' 
لقد قمت بتضمين المعلمة WhatIf حتى لا يحذف PowerShell المجلد. بدلاً من ذلك ، سيعرض PowerShell الإجراء الذي كان يجب تنفيذه إذا لم يتم تضمين معلمة WhatIf.

هذه نتيجة الأمر في PowerShell. الصورة الموجودة على يمين لقطة الشاشة هي المجلد الموجود في مجلد AppData الخاص بي.

كيفية استخدام بوويرشيل لحذف مجلد من بيانات التطبيق

كيفية استخدام بوويرشيل لحذف المجلد المخفي

يحتوي الأمر Get-ChildItem على معلمة تسمى Hidden. إذا كنت تريد سرد المجلدات المخفية في مجلد محدد ، فقم بتضمين المعلمة المخفية.

في لقطة الشاشة أدناه ، لدي 3 مجلدات (غير مخفية أو مخفية).

لتوضيح كيفية استخدام PowerShell لحذف المجلدات المخفية ، سأخفي Textfiles3. الآن ، المجلد مخفي.

كيفية استخدام بوويرشيل لحذف المجلد المخفي

لسرد المجلد المخفي ، سأقوم بتشغيل الأمر أدناه ...

Get-ChildItem F:ITGFiles -Hidden

كما هو متوقع ، يسرد الأمر المجلد المخفي فقط.

لحذف المجلد المخفي باستخدام PowerShell ، سأقوم الآن بتوصيل الأمر الأخير إلى الأمر Remove-Item.

Get-ChildItem F:ITGFiles -Hidden | Remove-Item -Recurse -Force

لتأكيد حذف المجلد ، قمت بتمكين سمة إظهار العناصر المخفية في مستكشف الملفات.

كيفية استخدام بوويرشيل لحذف المجلد المخفي

كيفية استخدام PowerShell لحذف الملفات مع الاحتفاظ بهيكل المجلد

قد تكون هناك حالات قد ترغب فيها في حذف جميع الملفات في مجلد ، بما في ذلك مجلداته الفرعية مع الاحتفاظ بهيكل المجلد.

لتحقيق ذلك ، تحتاج إلى تشغيل الأمر Get-ChildItem وتحديد معلمة File. عند استخدام معلمة ملف ، يسرد Get-ChildItem الملفات الموجودة في المجلد المحدد فقط.

لتوضيح كيفية عمل ذلك ، قمت بإنشاء بنية مجلد كما هو موضح في لقطة الشاشة أدناه:

كيفية استخدام PowerShell لحذف الملفات مع الاحتفاظ بهيكل المجلد

كما هو موضح في لقطة الشاشة ، يحتوي المجلد 1 على مجلدين فرعيين ، المجلد 2 والمجلد 3. علاوة على ذلك ، يحتوي folder2 و folder3 على بعض الملفات.

لاستخدام Get-ChildItem لعرض الملفات فقط في المسار ، F: ITGFiles folder1 ، سأقوم بتشغيل الأمر أدناه:

Get-ChildItem -Path F:ITGFilesfolder1 -File -Recurse

يعرض الأمر الملفات الموجودة في المسارين فقط ، F: ITGFiles folder1 folder2 and Directory: F: ITGFiles folder1 folder3

أخيرًا ، لحذف الملفات مع الاحتفاظ ببنية المجلد ، قم بتمرير الأمر الأخير إلى Remove-Item ...

Get-ChildItem -Path F:ITGFilesfolder1 -File -Recurse | Remove-Item -Recurse -Force

يقوم الأمر بحذف جميع الملفات ولكنه يترك بنية المجلد سليمة!

كيفية استخدام بوويرشيل لحذف مجلد مفتاح التسجيل

الأمر الخاص بسرد مجلد مفتاح التسجيل وحذفه هو نفس الأمر المستخدم لحذف المجلدات العادية.

إذا كنت تقرأ هذا الدليل منذ البداية ، فقد استخدمنا أمرين حتى الآن:

Get-ChildItem : تستخدم لسرد العناصر في مسار محدد
إزالة بند : تستخدم لحذف الملفات / المجلدات المدرجة بواسطة Get-ChildItem

ومع ذلك ، فإن الاختلاف الوحيد هو كيفية الوصول إلى مجلدات مفاتيح التسجيل.

هناك عدة طرق لتنسيق مفتاح التسجيل لاستخدامه في أوامر Get-ChildItem و Remove-Item. ومع ذلك ، في هذا المثال ، سأستخدم الطريقة أدناه:

'registry::HKEY_CURRENT_USERControl PanelDesktop'

في هذا المثال ، أريد الوصول إلى مجلد مفتاح التسجيل ، HKEY_CURRENT_USER لوحة التحكم سطح المكتب. كما ترى في تنسيق الأوامر أعلاه ، للقيام بذلك ، أضفت تسجيل الكلمات ، متبوعًا بنقطتين ، ::

لمعرفة المزيد حول كيفية عمل PowerShell مع تسجيل Windows ، اقرأ دليلنا - كيفية استخدام بوويرشيل لقراءة قيمة التسجيل .

بنقل المثال إلى الخطوة التالية ، لسرد العناصر الموجودة في مجلد مفتاح التسجيل أعلاه ، قم بتشغيل الأمر أدناه:

Get-ChildItem 'registry::HKEY_CURRENT_USERControl PanelDesktop'

يعرض الأمر جميع مجلدات المفاتيح الفرعية في مجلد مفتاح التسجيل المحدد.

إذا كنت أرغب في حذف مجلد محدد ، فسأقوم بتشغيل Get-ChildItem أولاً. بعد ذلك ، سأقوم بتوجيه الإخراج إلى تحديد الكائن

Get-ChildItem -Path 'registry::HKEY_CURRENT_USERControl PanelDesktop' | Select-Object name

يعرض الأمر أعلاه المسار الكامل لجميع المفاتيح الفرعية في مجلد مفتاح التسجيل الأصلي الخاص بي:

كيفية استخدام بوويرشيل لحذف مجلد مفتاح التسجيل

بعد ذلك ، لحذف المفاتيح الفرعية ، سأقوم بتوجيه آخر أمر إلى Remove-Item. ومع ذلك ، لحذف مجلد مفتاح فرعي معين ، سأقوم أولاً بتوجيه الأمر الأخير إلى Where-Object والتصفية حسب اسم المفتاح الفرعي الذي أريد حذفه:

Get-ChildItem -Path 'registry::HKEY_CURRENT_USERControl PanelDesktop' | Select-Object name | Where-Object {$_.Name -like '  colors  '}

يقوم الأمر الأخير الآن بإرجاع مسار مجلد مفتاح التسجيل الفرعي المحدد فقط.

أخيرًا ، لحذف المفتاح الفرعي للمجلد هذا باستخدام PowerShell ، قم بتمرير الأمر الأخير إلى Remove-Item. قبل ذلك ، على الرغم من أنه يتعين عليك تعديل مفتاح التسجيل وتوجيهه إلى Get-Item.

لتسهيل الأمر ، سأحفظ الأمر الأخير في متغير

$RefSubkey = (Get-ChildItem -Path 'registry::HKEY_CURRENT_USERControl PanelDesktop' | Select-Object name | Where-Object {$_.Name -like '  colors  '}).Name

ثم قم بتهيئته لأمر Get-Item

$RegKeyFormatted = 'registry::$RefSubkey'

أخيرًا ، قم بتوجيه مسار المفتاح المنسق إلى Get-Item ...

$RegKeyFormatted | Get-Item

الآن ، يمكننا حذف القيمة عن طريق تمرير آخر أمر إلى Remove-Item (قمت بتضمين معلمة whatif لأنني لا أريد حذف هذا المفتاح)

$RegKeyFormatted | Get-Item | Remove-Item -Force -Recurse -whatif

وها هي النتيجة ...

كيفية استخدام بوويرشيل لحذف مجلد مفتاح التسجيل

كيفية استخدام بوويرشيل لحذف اسم المجلد مثل

في سياق الأمثلة الأخرى في هذا الدليل ، لقد أوضحت كيفية استخدام PowerShell لحذف اسم مجلد باستخدام مرشح Like. أيضًا ، كما هو موضح بالفعل في الأمثلة السابقة ، يمكن تطبيق عامل التصفية هذا في الأمر Get-ChildItem أو في أمر Where-Object.

على سبيل المثال ، لحذف جميع الملفات والمجلدات بأسماء مثل الملف في المسار F: ITGFiles ، يمكنني استخدام الأمر أدناه:

Get-ChildItem F:ITGFiles -Filter '  file  ' -Recurse
لكي يعمل المرشح ، قد تحتاج إلى استخدام حرف بدل. في هذا المثال ، أستخدم حرف البدل النجمة.

يمكنني تحقيق نفس النتيجة عن طريق توصيل Get-ChildItem إلى Where-Object. بعد ذلك ، قم بإجراء التصفية في Where-Object.

Get-ChildItem F:ITGFiles -Recurse | Where-Object {$_.Name -like '  file  '}

يقوم الأمر بإرجاع نفس نتيجة الأمر الأخير!

كيفية استخدام بوويرشيل لحذف اسم المجلد مثل

كما هو الحال مع الأمثلة الأخرى في هذا الدليل ، لحذف المجلد ، قم بتوصيل إخراج أي من الأمرين إلى Remove-Item.

كيفية استخدام PowerShell لحذف مجلدات أكبر من الحجم المحدد

إذا كنت تريد حذف مجلدات أكبر من الحجم المحدد باستخدام PowerShell ، فيجب عليك حساب أحجام المجلدات في المسار المحدد أولاً.

ومع ذلك ، يجب عليك سرد المسار الكامل للمجلدات الفرعية في مسار المجلد المحدد. لسرد المسار الكامل لجميع المجلدات الفرعية في مسار مجلد ، قم بتشغيل أمر مشابه للأمر أدناه:

$subfolderpaths = (Get-ChildItem F:ITGFiles -Depth 0 | Where-Object {$_.PSIsContainer -eq $TRUE}).FullName

يسرد الأمر المسارات الكاملة لجميع المجلدات الفرعية في مسار المجلد ، F: ITGFiles

باستخدام عمق المعلمة بقيمة 0 ، بدلاً من يعيد تنفيذ يضمن إرجاع المجلدات الفرعية من المستوى الأول فقط. كيفية استخدام PowerShell لحذف مجلد مشترك على الشبكة

الآن بعد أن أصبح لدي المسار الكامل للمجلد الفرعي ، سأستخدم هذه المعلومات لحساب حجم كل مجلد فرعي. ومع ذلك ، للحصول على المسار الكامل للمجلدات الفرعية (مطلوب لحذفها لاحقًا) والحجم ، أحتاج إلى إنشاء برنامج نصي مخصص.

هذا هو النص الكامل:

$subfolderpaths = (Get-ChildItem F:ITGFiles -Depth 0 | where-Object {$_.PSIsContainer -eq $TRUE}).FullName #Using Depth 0, instead of Recurse ensures that only the first level folders are returned ForEach ($folderpath in $subfolderpaths) { $FolderPath = $folderpath $FolderSize = [math]::round((Get-ChildItem $folderpath -Recurse | Measure-Object -Property Length -Sum).Sum /1MB, 1) $report = '' | Select-Object -Property FolderPath, 'FolderSize (MB)' $report.FolderPath = $FolderPath $report.'FolderSize (MB)' = $FolderSize If ($report.'FolderSize (MB)' -ge 10) { $report } } 

وهنا نتيجة الأمر في PowerShell ISE.

كما ترى من لقطة الشاشة ، يقوم البرنامج النصي بإرجاع ملف واحد فقط يتوافق مع معايير الحجم (10 ميجابايت).

من الواضح أن لدينا بت أخير لإكمال المهمة - احذف الملف. لحذف الملف الذي يلبي متطلبات الحجم ، قمت بتعديل عبارة IF كما هو موضح في هذا البرنامج النصي ...

If ($report.'FolderSize (MB)' -ge 10) { Remove-Item $report.FolderPath -Force -Recurse }

إذن ، هذا هو النص النهائي الذي يحذف مجلدات أكبر من قيمة محددة

$subfolderpaths = (Get-ChildItem F:ITGFiles -Depth 0 | where-Object {$_.PSIsContainer -eq $TRUE}).FullName #Using Depth 0, instead of Recurse ensures that only the first level folders are returned ForEach ($folderpath in $subfolderpaths) { $FolderPath = $folderpath $FolderSize = [math]::round((Get-ChildItem $folderpath -Recurse | Measure-Object -Property Length -Sum).Sum /1MB, 1) $report = '' | Select-Object -Property FolderPath, 'FolderSize (MB)' $report.FolderPath = $FolderPath $report.'FolderSize (MB)' = $FolderSize If ($report.'FolderSize (MB)' -ge 10) { Remove-Item $report.FolderPath -Force -Recurse } } 
لاستخدام البرنامج النصي ، قم بتغيير المسار F: ITGFiles في Get-ChildItem - السطر 1. أيضًا ، قم بتغيير حجم المجلد الذي تريد حذفه - من 10 (بالميغابايت) إلى الحجم المطلوب.

كيفية استخدام PowerShell لحذف مجلد مشترك على الشبكة

لا تختلف عملية استخدام PowerShell لحذف مجلدات الشبكة عن حذف المجلدات المحلية. الاختلاف الوحيد هو كيفية تحديد مجلد الشبكة.

بالإضافة إلى الطريقة التي تحدد بها مجلد الشبكة ، تحتاج أيضًا إلى الحصول على الأذونات الصحيحة. على وجه التحديد ، يجب أن يكون لديك إذن 'تغيير المشاركة'.

علاوة على ذلك ، تحتاج أيضًا إلى الحصول على إذن أمان تعديل NTFS.

بمجرد تلبية متطلبات الأذونات هذه ، يمكنك الوصول إلى مجلد الشبكة باستخدام الأمر Get-ChildItem. بعد ذلك ، لحذف المجلد ، قم بتوجيه إخراج Get-ChildItem إلى Remove-Item.

لتوضيح كيفية استخدام PowerShell لحذف مجلد شبكة ، سأستخدم مجلدًا مشتركًا يسمى TestShare. المجلد موجود في بلدي نظام التشغيل Windows 11 اختبار الكمبيوتر يسمى ITGWIN11BETA.

لسرد محتوى مجلد الشبكة المشترك ، سأستخدم الأمر Get-ChildItem كما هو موضح أدناه ...

Get-ChildItem ITGWIN11BETATestShare -Recurse

تمامًا مثل المجلد المحلي ، يسرد الأمر جميع المجلدات والمجلدات الفرعية الموجودة في مجلد الشبكة المشترك.

كيفية استخدام PowerShell لحذف مجلد أو ملف يبدأ بـ

من هذه النقطة ، يمكنك توجيه الأمر الأخير مباشرة إلى Remove-Item. بدلاً من ذلك ، يمكنك تطبيق بعض المرشح قبل توصيله بالأنابيب إلى Remove-Item.

على سبيل المثال ، إذا كنت تريد حذف مجلد معين ، فيمكنك استخدام ملحق منقي المعلمة في Get-ChildItem. بدلاً من ذلك ، يمكنك توجيه Get-ChildItem إلى Where-Object واستخدام ملحق منقي المعلمة في أين الكائن.

أخيرًا ، لحذف العنصر في مجلد الشبكة المشترك ، قم بتوصيل النتيجة إلى Remove-Item.

كيفية استخدام PowerShell لحذف مجلد أو ملف يبدأ بـ

إذا كنت ترغب في حذف المجلدات أو الملفات التي تبدأ باسم معين ، فيمكنك استخدام ملحق منقي المعلمة في Get-ChildItem Cmdlet لسرد الملفات. ثم امسح النتيجة إلى Remove-Item.

بدلاً من ذلك ، يمكنك استخدام ملف حذف() الطريقة في Get-ChildItem.

لتوضيح هذا المثال ، سأقوم بحذف جميع الملفات والمجلدات بدءًا من f في لقطة الشاشة أدناه.

كما ذكرت سابقًا ، فإن الخطوة الأولى هي استخدام Get-ChildItem Cmdlet مع المعلمة Filter. هنا أمر عينة:

Get-ChildItem F:ITGFilesTextfiles -Filter *f*
يمكن أن يكون الخيار الآخر هو توجيه Get-ChildItem إلى Where-Object وإجراء التصفية في Where-Object.

يسرد الأمر جميع الملفات التي تبدأ بـ f. انظر اللقطة في الاسفل:

كيفية استخدام PowerShell لحذف ملف أو ملف ، ثم كتابة تقرير إلى ملف السجل

الخطوة الأخيرة لحذف جميع المجلدات والملفات بدءًا من f هي توجيه إخراج

Get-ChildItem F:ITGFilesTextfiles -Filter *f* | Remove-Item -Recurse -Force

كيفية استخدام PowerShell لحذف مجلد SoftwareDistribution

كما تعلم بالفعل ، يخزن Windows التحديثات التي تم تنزيلها في مجلد SoftwareDistribution. من الناحية المثالية ، لن تحتاج إلى حذف هذا المجلد.

ومع ذلك ، إذا كانت قاعدة بيانات Windows Update تالفة ، فإن إحدى طرق إصلاحها هي حذف ملف توزيع البرمجيات مجلد. قبل القيام بذلك ، تحتاج أولاً إلى إيقاف تحديث Windows.

لإيقاف خدمة Windows Update ، قم بتشغيل PowerShell كمسؤول. بعد ذلك ، قم بتشغيل الأمر أدناه:

Get-Service -Name wuauserv | Stop-Service
إذا لم تقم بإيقاف خدمة Windows Update ، فلن تتمكن من حذف ملف توزيع البرمجيات مجلد

بعد ذلك ، لاستخدام PowerShell لحذف مجلد SoftwareDistribution ، قم بتشغيل الأوامر أدناه:

$SoftwareDistribution = $env:SystemDrive + 'WindowsSoftwareDistribution'  
Get-ChildItem $SoftwareDistribution -Recurse -force | Remove-Item -Recurse -Force
$Windowsfolder = $env:SystemDrive + 'Windows'
Get-ChildItem $Windowsfolder -filter SoftwareDistribution | Remove-Item -Recurse -Force

أخيرًا ، لإعادة إنشاء مجلد SoftwareDistribution ، أعد تشغيل خدمة Windows Update

Get-Service -Name wuauserv | Start-Service

كيفية استخدام PowerShell لحذف ملف أو مجلد بعد ضغطه

لضغط ملف أو مجلد ، استخدم الأمر Compress-Archive كما هو موضح في المثال أدناه:

Compress-Archive -LiteralPath F:ITGFilesTextfiles2 -DestinationPath F:ITGFilesTextfiles2 -CompressionLevel Fastest
قم بتغيير LiteralPath إلى المسار المصدر للملف أو المجلد الذي تريد ضغطه. أيضًا ، قم بتغيير DestinationPath إلى المسار الذي تريد حفظ الملف المضغوط به.

بمجرد ضغط الملف ، استخدم الأمر أدناه لحذفه ...

Remove-Item F:ITGFilesTextfiles2 -Recurse -Force

كيفية استخدام PowerShell لحذف ملف أو ملف ، ثم كتابة تقرير إلى ملف السجل

إذا كنت ترغب في استخدام PowerShell لحذف ملف أو مجلد ، ثم قم بالإبلاغ عن الإجراءات إلى ملف السجل ، فأنت بحاجة أولاً إلى تحديد أسماء ملفات السجل.

في هذا المثال ، أريد الحصول على ملفي سجل ، أحدهما لتسجيل النجاح والثاني لتسجيل الأخطاء.

عادةً ما أرغب في إنشاء ملفات السجل الخاصة بي بناءً على التاريخ. في هذا المثال ، سأقوم أولاً بإنشاء طابع تاريخ وحفظه في متغير:

$CurrentDate = Get-Date -Format 'dddd-dd-MM-yyyy-HH-mm'

بعد ذلك ، سأُنشئ ملفي سجل بناءً على طابع التاريخ ...

$SuccessLog = 'SuccessLog-' + $CurrentDate + '.log'  
$ErrorLog = 'ErrorLog-' + $CurrentDate + '.log'

هناك قطعة واحدة مفقودة - مسار الدليل لحفظ ملفات السجل. لإضافة هذا الجزء ، سأحفظ المسار في متغير ...

$Path = 'F:logfiles'

ثم أضف المسار إلى ملفات السجل أعلاه ...

$SuccessLog = $Path + 'SuccessLog-' + $CurrentDate + '.log'  
$ErrorLog = $Path + 'ErrorLog-' + $CurrentDate + '.log'

يقوم الأمران الأخيران بإنشاء ملفي سجل. لمزيد من التفاصيل ، انظر لقطة الشاشة أدناه ...

الآن بعد أن أنشأت ملفات السجل الخاصة بنا ، سأقوم الآن بإنشاء برنامج نصي PowerShell يحذف الملفات والمجلدات في مسار محدد. بعد ذلك ، اكتب التقارير إلى ملفات السجل.

في هذا المثال ، أريد حذف الملفات الموجودة في المجلد Windows Temp. الخطوة الأولى هي حفظ المسار إلى هذا المجلد في متغير ...

$WindowsTemp = $env:SystemDrive + 'WindowsTemp'

بعد ذلك ، سأستخدم Get-ChildItem لسرد محتوى المجلد وتوجيه الإخراج إلى Remove-Item.

ومع ذلك ، لكي أكون قادرًا على التقاط الأخطاء ، أحتاج إلى إرفاق الأمر بأكمله في المحاولة ، والقبض.

هذا هو النص الكامل ...

$error.Clear() #clears all existing errors Try { $CurrentDate = Get-Date -Format 'dddd-dd-MM-yyyy-HH-mm' $LogPath = 'F:logfiles' $SuccessLog = $LogPath + 'SuccessLog-' + $CurrentDate + '.log' $ErrorLogFile = $LogPath + 'ErrorLog-' + $CurrentDate + '.log' $Path = 'E:
eports' $items = Get-ChildItem $Path -Recurse -Force -ErrorAction SilentlyContinue ForEach ($item in $items) { Remove-Item $item.FullName -Force -Recurse -ErrorAction SilentlyContinue If (Test-Path $item.FullName -ErrorAction Continue ) #$errormessage = $item.FullName + $error.Exception #$error.Exception.Message Else Out-File $SuccessLog -Append Add-Content -Value '$item successfully deleted' -Path $SuccessLog } } Catch { }
لاستخدام البرنامج النصي ، انسخه إلى PowerShell ISE. بعد ذلك ، قم بتغيير متغير المسار $ إلى مسار المجلد الذي تريد حذفه. أيضًا ، قم بتغيير $ LogPath إلى مسار المجلد الذي تريد حفظ ملفات السجل الخاصة بك.

هذا هو - دليلنا الشامل لاستخدام PowerShell لحذف الملفات أو المجلدات! أتمنى أن تكون قد وجدت الدليل مفيدًا.

إذا وجدت أنها مفيدة ، يرجى التصويت نعم ل هل كانت هذه الوظيفة مفيدة؟ أقل. بدلاً من ذلك ، يمكنك مشاركة التعليقات التفصيلية باستخدام نموذج 'مغادرة الرد' في نهاية هذه الصفحة.

أخيرًا ، لمزيد من أدلة PowerShell مع الأمثلة ، تفضل بزيارة صفحة كيفية استخدام Windows PowerShell. قد تجد أيضًا أدلة تدريب PowerShell المجانية مفيدة.