
هل تريد حذف الملفات والمجلدات باستخدام PowerShell ، لكن لا تعرف كيف؟ ستمنحك هذه المقالة دليلًا تفصيليًا حول كيفية استخدام PowerShell لحذف مجلد أو ملف أو جميع المجلدات والملفات في مسار محدد.
يعلمك منشور المدونة هذا طرقًا مختلفة لحذف المجلدات والملفات باستخدام PowerShell. إذا كان هذا يبدو مثيرا للاهتمام ، استمر في القراءة!
يبدأ الدليل بشرح طريقتين لاستخدام PowerShell لحذف المجلدات والملفات. بعد ذلك ، في القسم الثاني ، ستتعرف على كيفية إصلاح الأخطاء الشائعة المرتبطة بحذف الملفات والمجلدات باستخدام PowerShell.
أخيرًا ، يضم الدليل أكثر من 20 مثالًا.
تصفح مواضيع المنشور
- طريقتان لحذف مجلد أو ملف باستخدام PowerShell
- كيفية إصلاح الأخطاء الشائعة باستخدام Powershell حذف المجلد أو الملف
- كيفية إصلاح Powershell حذف المجلد أو رفض الوصول إلى الملف خطأ
- كيفية إصلاح Powershell Delete Folder لا يمكن إزالته لأنه ليس خطأ فارغ
- كيفية إصلاح Powershell حذف المجلد المستخدم بواسطة خطأ آخر في العملية
- كيفية إصلاح Powershell حذف المجلد أو مجلد الملف أو اسم الملف خطأ طويل جدًا
- كيفية إصلاح Powershell ، تم رفض الوصول إلى المجلد إلى المسار خطأ
- المزيد من Powershell حذف مجلد أو أمثلة على الملف
- كيفية حذف مجلد أو ملف باستخدام PowerShell إذا كان موجودًا
- كيفية حذف مجلد ومجلداته الفرعية باستخدام PowerShell
- كيفية حذف مجلد أو ملف أقدم من x يوم (أو استنادًا إلى التاريخ) باستخدام PowerShell
- كيف تستخدم بوويرشيل لحذف محتويات المجلد فقط
- كيف تستخدم PowerShell لحذف المجلد والمحتويات دون تأكيد أو مطالبة
- كيف تستخدم بوويرشيل لحذف مجلد أو ملف لإعادة تدوير سلة
- كيفية استخدام PowerShell لحذف مجلد أو ملف واستبعاد المجلدات أو الملفات الأخرى
- كيفية استخدام PowerShell لحذف مجلد حتى لو لم يكن فارغًا
- كيفية استخدام PowerShell لحذف المجلدات الفارغة التي يزيد عمرها عن X يوم
- كيفية استخدام بوويرشيل لحذف مجلد ملف تعريف المستخدم
- كيفية استخدام بوويرشيل لحذف مجلد من بيانات التطبيق
- كيفية استخدام بوويرشيل لحذف المجلد المخفي
- كيفية استخدام PowerShell لحذف الملفات مع الاحتفاظ بهيكل المجلد
- كيفية استخدام بوويرشيل لحذف مجلد مفتاح التسجيل
- كيفية استخدام بوويرشيل لحذف اسم المجلد مثل
- كيفية استخدام PowerShell لحذف مجلدات أكبر من الحجم المحدد
- كيفية استخدام PowerShell لحذف مجلد مشترك على الشبكة
- كيفية استخدام PowerShell لحذف مجلد أو ملف يبدأ بـ
- كيفية استخدام PowerShell لحذف مجلد SoftwareDistribution
- كيفية استخدام PowerShell لحذف ملف أو مجلد بعد ضغطه
- كيفية استخدام PowerShell لحذف ملف أو ملف ، ثم كتابة تقرير إلى ملف السجل
طريقتان لحذف مجلد أو ملف باستخدام PowerShell

يوفر PowerShell طريقتين لحذف العناصر. يمكنك حذف مجلد أو ملف باستخدام PowerShell Delete Method.
ثانيًا ، يمكنك استخدام Remove-Item لحذف العناصر في PowerShell. في القسمين الفرعيين التاليين من هذا القسم ، ستتعلم كيفية استخدام هذه الطرق.
الطريقة الأولى: استخدام بوويرشيل حذف() طريقة حذف مجلد أو ملف
لكي يقوم PowerShell بحذف مجلد ، تحتاج إلى Get-ChidItem Cmdlet. Get-ChildItem يقوم الأمر Cmdlet بإرجاع العناصر والعناصر الفرعية في موقع محدد.
لسرد كافة الملفات والمجلدات الموجودة في المسار م: التقارير ، قم بتشغيل الأمر أدناه:
Get-ChildItem E: eports
هذه هي النتيجة في 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 لحذف المجلد المسمى التقارير عن طريق تشغيل الأمر أدناه:
(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. انظر اللقطة في الاسفل.

إليك أمر PowerShell الذي سيحذف المجلد ...
Get-ChildItem E: eports -Recurse -Filter 'ITGServer2' | Remove-Item -Force -Recurse
بعد تشغيل الأمر أعلاه ، اختفى المجلد!

في المثال الثاني ، أريد حذف المجلدات والمجلدات الفرعية في E: Reports. الأمر أدناه سيؤدي المهمة ...
Get-ChildItem E: eports -Recurse | ForEach { Remove-Item $_.FullName -Force -Recurse }
بعد تشغيل الأمر الأخير ، اختفت جميع المجلدات الموجودة في المجلد المحدد!

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

عند تشغيل الأمر Remove-Item PowerShell لحذف مجلد أو ملف ، فقد يُرجع بعض الأخطاء. يغطي هذا القسم بعض هذه الأخطاء وكيفية إصلاحها.
أشعر أنه من الأفضل مناقشة الحلول لهذه الأخطاء الشائعة قبل أن نتعمق في بعض أمثلة مسؤول النظام الواقعية حول كيفية استخدام PowerShell لحذف المجلدات أو الملفات.
كيفية إصلاح Powershell حذف المجلد أو رفض الوصول إلى الملف خطأ
إذا قمت بتشغيل 'إزالة العنصر' لحذف ملف أو مجلد وتلقيت رسالة خطأ 'تم رفض الوصول' ، فجرّب ما يلي:
- تغيير مالك الملف أو المجلد - استخدم الرموز أدناه لتغيير مالك الملف أو المجلد إلى المسؤول المحلي
لتشغيل هذا الأمر ، افتح 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. إذا لم ينجح الأمر ، فجرّب هذه الإصلاحات.
- أضف ال فرض المعلمة لإزالة العنصر
- جرب طريقة الحذف () بدلاً من ذلك. إذا كنت لا تعرف كيفية استخدام طريقة حذف 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 حذف المجلد المستخدم بواسطة خطأ آخر في العملية

إذا تلقيت 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 إذا كان موجودًا
نظرًا لأن هذا المثال له شرط - في حالة وجود المجلد أو الملف - يتحقق المسار الأول للأمر من وجود العنصر.
يمكنك استعمال ال مسار الاختبار أمر للتحقق من وجود مجلد أو ملف. بعد ذلك ، يمكنك استخدام العبارة الشرطية 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إذا لم يفي أي ملف أو مجلد بمعايير LastWriteTime ، فلن يتم حذف أي منها.
Get-ChildItem F:ITGFilesTextfiles | Where-Object {$_.PSIsContainer -eq $FALSE -AND $_.LastWriteTime -le $DaysRef} | Remove-Item -Recurse -Force
كيف تستخدم بوويرشيل لحذف محتويات المجلد فقط
في هذا المثال ، سأحذف محتوى المجلد 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. لتنزيل الوظيفة واستخدامها ، اتبع الخطوات التالية:
- انقر فوق تنزيل Remove-ItemToRecycleBin.zip لتنزيل الوظيفة
- بعد ذلك ، قم بفك ضغط الملف المضغوط الذي تم تنزيله. عند فك ضغط الملف ، سيتم إنشاء مجلد يسمى Remove-ItemToRecycleBin.
- أخيرًا ، انسخ المجلد إلى مجلد قالب ملف تعريف 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.

كما ترى من لقطة الشاشة أعلاه ، يحتوي المجلد على مجلدات وملفات.
لحذف المجلدات فقط ، يجب أولاً استخدام الأمر 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 فقط.

كيفية استخدام PowerShell لحذف مجلد حتى لو لم يكن فارغًا
إذا كنت تريد حذف مجلد باستخدام PowerShell - حتى إذا لم يكن المجلد فارغًا - فقم بتضمين ملف فرض و يعيد تنفيذ المعلمات. هنا مثال.
Remove-Item F:ITGFilesTextfiles5 -Recurse -Force
كيفية استخدام PowerShell لحذف المجلدات الفارغة التي يزيد عمرها عن X يوم
اتبع الخطوات أدناه لاستخدام PowerShell لحذف المجلدات الفارغة الأقدم من x يوم ...
في هذا المثال ، أرغب في حذف المجلدات الأقدم من 90 يومًا من ملف تعريف Windows 10 الخاص بي ، C: Users VictorA.
- استخدم Get-ChildItems لسرد المجلدات فقط في المسار المحدد:
Get-ChildItem -Path C:UsersVictorA -Directory
يسرد الأمر جميع المجلدات في المسار المحدد. إذا كنت تتذكر ، في الأوامر السابقة في هذا الدليل ، لإرجاع المجلدات التي استخدمناها أين الكائن للتصفية حسب حاوية PSIs منشأه. ومع ذلك ، قررت تحقيق نفس النتيجة باستخدام الدليل معلمة Get-ChildItem .
- ثم قم بتوجيه نتيجة الأمر Get-ChildItem إلى Where-Object. ضمن الأمر Where-Object ، أضف عامل تصفية يقوم بإرجاع المجلدات الفارغة فقط. ها هو الأمر ...
Get-ChildItem -Path C:UsersVictorA -Directory | Where-Object { $_.GetFileSystemInfos().Count -eq 0 }
- الآن ، نحتاج إلى إضافة المسار الذي يقوم بإرجاع المجلدات في القائمة السابقة التي مضى عليها أكثر من 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) }
ها هي نتيجة الأمر الأخير ...

كما ترى ، يتم إرجاع مجلدين فارغين فقط بواسطة الأمر الأخير. قمت بتشغيل هذا الأمر في 4 أغسطس 2021. كما ترون ، فإن LastWriteTime من المجلدين بتاريخ 16/06/2021 16:29.
للقراء في الولايات المتحدة ، هذا التاريخ هو 16 أغسطس 2021 (06/16/2021)هذا يعني أن آخر مرة تم فيها تعديل المجلدين هي أكثر من 90 يومًا من وقت تشغيل الأمر.
- أخيرًا ، لحذف هذه المجلدات الفارغة التي مضى عليها أكثر من 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 الملفات الموجودة في المجلد المحدد فقط.
لتوضيح كيفية عمل ذلك ، قمت بإنشاء بنية مجلد كما هو موضح في لقطة الشاشة أدناه:

كما هو موضح في لقطة الشاشة ، يحتوي المجلد 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 ، بدلاً من يعيد تنفيذ يضمن إرجاع المجلدات الفرعية من المستوى الأول فقط.
الآن بعد أن أصبح لدي المسار الكامل للمجلد الفرعي ، سأستخدم هذه المعلومات لحساب حجم كل مجلد فرعي. ومع ذلك ، للحصول على المسار الكامل للمجلدات الفرعية (مطلوب لحذفها لاحقًا) والحجم ، أحتاج إلى إنشاء برنامج نصي مخصص.
هذا هو النص الكامل:
$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
تمامًا مثل المجلد المحلي ، يسرد الأمر جميع المجلدات والمجلدات الفرعية الموجودة في مجلد الشبكة المشترك.

من هذه النقطة ، يمكنك توجيه الأمر الأخير مباشرة إلى 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. انظر اللقطة في الاسفل:

الخطوة الأخيرة لحذف جميع المجلدات والملفات بدءًا من 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 المجانية مفيدة.