
بوويرشيل جرب كاتش يتم استخدام block لمعالجة الأخطاء في البرمجة النصية لـ PowerShell. عند استخدام PowerShell جرب كاتش كتلة للبرمجة يمكنك تحقيق ما يلي:
- احصل على البرنامج النصي الخاص بك للاستمرار في العمل على الرغم من حدوث خطأ
- عرض رسائل الخطأ والتعامل معها بشكل أفضل
في هذا الدليل ، ستتعلم كيفية استخدام Powershell جرب كاتش كتل لمعالجة رسائل خطأ الإنهاء في PowerShell. بالإضافة إلى ذلك ، سوف تتعلم كيفية تضمين ملف أخيرا منع في جرب كاتش منع.
يبدأ الدليل بصيغة ملف جرب كاتش منع.
تصفح مواضيع المنشور
- PowerShell جرب بناء الجملة
- الأنواع الشائعة لأخطاء الاستثناء في PowerShell حاول الالتقاط
- كيفية التقاط استثناءات معينة باستخدام PowerShell حاول الالتقاط
- كيف يتم تضمين A Last Block to PowerShell Try Catch Statement
- معلومات مفيدة إضافية حول PowerShell جرب Catch
- كيفية مسح PowerShell جرب Catch $ Error Automatic Variable
- كيفية عرض رسالة خطأ مخصصة في PowerShell حاول Catch Block
- كيفية الحصول على معلومات خطأ CategoryInfo في بوويرشيل حاول الالتقاط
- كيفية استخدام الكتابة-المضيف لعرض رسائل الخطأ في بوويرشيل حاول الالتقاط
- كيفية إنشاء Hashtable في PowerShell حاول Catch Block
- أمثلة على تجربة PowerShell حاول الالتقاط
- المراجع وقراءات إضافية
بوويرشيل جرب كاتش بناء الجملة

بناء جملة بوويرشيل جرب كاتش يكون…
try {}
ال يحاول هو جزء من الكتلة الذي تريد من PowerShell مراقبته بحثًا عن الأخطاء. هذه هي الكتلة مع البرامج النصية الأصلية التي قد ترجع خطأ الإنهاء.
عند حدوث خطأ في كتلة المحاولة ، يحفظ PowerShell الخطأ في المتغير التلقائي $ Error (المزيد حول هذا لاحقًا).
من ناحية أخرى ، فإن ر هو قبض على بيان بوويرشيل جرب كاتش كتلة تتعامل مع الأخطاء التي تم إنشاؤها في كتلة try. يمكنك أيضًا تحديد أنواع الأخطاء التي يتم معالجتها داخل ملف قبض على كتلة البيان.
ال أخيرا يمكن استخدام block لتحرير أي موارد لم تعد بحاجة إليها بواسطة البرنامج النصي.
الأنواع الشائعة لأخطاء الاستثناء في PowerShell جرب كاتش

يمكنك معالجة أنواع مختلفة من الأخطاء في مجموعة PowerShell Try Catch. على سبيل المثال ، يمكنك التعامل مع أخطاء معينة.
بالإضافة إلى ذلك ، يمكنك معالجة رسائل الخطأ العامة. ومع ذلك ، للتعامل مع أنواع معينة من الأخطاء ، تحتاج إلى معرفة نوع الخطأ.
لاحقًا في هذا الدليل ، ستتعرف على أنه تم حفظ رسائل الخطأ في المتغير التلقائي للخطأ $. بالإضافة إلى ذلك ، يمكن أيضًا حفظ الأخطاء في متغير خط الأنابيب $ _.
علاوة على ذلك ، يتم حفظ الأخطاء المحفوظة في المتغير التلقائي $ error في مصفوفة. للمساعدة في شرح ذلك ، دعنا ننفذ أمرًا يعرض رسالة خطأ إنهاء:
لمسح جميع الأخطاء المحفوظة مسبقًا في ملف خطأ $ متغير تلقائي ، قبل تشغيل الأمر أدناه ، أولاً ، قم بتشغيله $ error.Clear () يأمر.catch [[][',' ]*] {}
لا يوجد سجل أحداث يسمى Systerr ، لذا فإن الأمر الموجود في كتلة المحاولة سيرسل رسالة خطأ.والمثير للدهشة أن الأمر لم يعرض أي رسالة خطأ. إذن ، ما الذي حدث لرسالة الخطأ؟

يتم حفظه في المتغير التلقائي خطأ $! لعرض الخطأ من الأمر الأخير ، المحفوظ في المتغير error $ ، قم بتشغيل الأمر ...
finally {
تعرض نتيجة الأمر تفاصيل الخطأ المحفوظة في المتغير التلقائي للخطأ $. معلومات الخطأ لها قسم يسمى FullyQualifiedErrorId .
لهذا الخطأ المحدد ، فإن FullyQualifiedErrorId مجموعتان من المعلومات - System.InvalidOperationException و Microsoft.PowerShell.Commands.GetEventLogCommand .
المعلومات التي نهتم بها هي System.InvalidOperationException . هذا نوع من الخطأ يمكنك القيام به قبض على في مجموعة PowerShell Try Catch.
للحصول على اسم استثناء PowerShell هذا ، قم بتشغيل الأمر أدناه:
try {}
ذلك هو، System.InvalidOperationException !

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

كما ترى من لقطة الشاشة ، فإن نوع الاستثناء (FullyQualifiedErrorId) هو CommandNotFoundException .
نظرًا لأن هذا خطأ في الإنهاء ، فسيؤدي ذلك إلى منع البرنامج النصي من المتابعة. لمنع هذا الخطأ من إنهاء البرنامج النصي ، قم بلف الأمر في ملف جرب كاتش منع.
إذا قمنا بلف هذا الخطأ في كتلة PowerShell Try Catch ، فسيقوم PowerShell بمنع الخطأ. علاوة على ذلك ، سوف يمنعه من إنهاء البرنامج النصي الخاص بك.
ومع ذلك ، على الرغم من منع الخطأ ، فإنه يتم حفظه في متغير error $. كالمعتاد ، قبل تشغيل الأمر أدناه ، امسح أولاً الأخطاء المحفوظة في المتغير error $.
catch [[][',' ]*] {}
إذا كنت ترغب في تشغيل الأمر في PowerShell بدلاً من PowerShell ISE ، فاكتب الأوامر في سطر واحد كما هو موضح أدناه:
finally {
ثم ، لعرض الخطأ ، قم بتشغيل ...
try {}

كما ذكرت في المقدمة الرئيسية لهذا القسم ، لعرض معرف الاستثناء لهذا الخطأ ، قم بتشغيل الأمر أدناه:
catch [[][',' ]*] {}
الاسم الكامل للاستثناء هو System.Management.Automation.CommandNotFoundException .

PowerShell حاول الالتقاط ManagementObjectNotFoundException خطأ
عند تشغيل أحد الأوامر في جلسة PS عن بُعد باستخدام معلومات خاطئة ، يقوم PowerShell بإرجاع ملف ManagementObjectNotFoundException خطأ.
السيناريو المعتاد هو عندما تتصل بـ Office 365 باستخدام PowerShell. بعد ذلك ، قم بتشغيل الأمر Get-User ولكن قم بتوفير المستخدم الخطأ هوية .

للقبض على هذا الخطأ باستخدام PowerShell Try Catch ، استخدم أمرًا مشابهًا للأمر أدناه:
finally {
اصطياد ManagementObjectNotFoundException خطأ في PowerShell Try ، يعد Catch صعبًا بشكل خاص. يجب عليك استخدام ملف خطأ المعلمة وتحديد قف . خلاف ذلك ، حتى مع المحاولة ، Catch ، سيظل الخطأ معروضًا.أخيرًا ، للحصول على اسم الاستثناء ، استخدم الأمر أدناه:
|_+_|
|_+_|
|_+_|
يقوم الأمر بإرجاع نوع الاستثناء كـ System.Management.Automation.RemoteException . إذا ماذا ManagementObjectNotFoundException ؟
ManagementObjectNotFoundException هو سبب الاستثناء كما أكده الأمر أدناه:
Try { Get-EventLog -LogName Systerr } Catch { }

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

الآن ، إذا حاولت الوصول إلى الملف باستخدام الأمر Get-Content ، فإنني أتلقى رسالة رفض الوصول.
$error

لإيقاف عرض هذا الخطأ ، قم بتشغيل الأمر داخل كتلة PowerShell Try Catch كما هو موضح أدناه ...
$error[0].exception.gettype().fullname
لسوء الحظ ، فإن الأمر أعلاه لا يوقف عرض الخطأ. والسبب هو أنه ليس خطأ إنهاء.

لإيقاف عرض الخطأ ، قم بتضمين ملف خطأ المعلمة وتحديد قف .
$error.Clear() Try { Get-File } Catch { }
الآن ، يقوم الأمر بقمع الخطأ. لعرض نوع الاستثناء ، قم بتشغيل الأمر أدناه ...
$error.Clear(); Try {Get-File } Catch { }
نوع الاستثناء هو System.UnauthorizedAccessException .

كيفية التقاط استثناءات معينة باستخدام PowerShell حاول الالتقاط

ناقش القسم الأخير استثناءات PowerShell الشائعة وكيفية العثور على نوع الاستثناء. سيغطي هذا القسم كيفية استخدام هذه المعلومات لالتقاط أنواع معينة من رسائل الخطأ.
في قسم بناء الجملة من هذا الدليل ، قلت إن البنية العامة لـ PowerShell Try Catch أخيرًا هي ...
$error
في قالب الالتقاط من بناء الجملة ، يمكنك مشاهدة [نوع الخطأ]. هذا هو المكان الذي تحدد فيه نوع الخطأ الذي تريد اكتشافه في هذه الكتلة.
على سبيل المثال ، للقبض على أخطاء UnauthorizedAccessException ، استخدم العبارات أدناه ...
$error[0].exception.gettype().fullname
لتشغيل الأمر في PowerShell ، حدد العبارات في سطر واحد. الجزء الأول من العبارة - error.Clear () $ - يزيل أي أخطاء محفوظة في المتغير error $.
$error.Clear(); Try {Get-User -Identity paul -ErrorAction Stop} Catch {}
كيفية إضافة المضاعفات قبض على كتل في بوويرشيل جرب كاتش بيان - تصريح
في مقدمة هذا القسم ، أوضحت لك كيفية التقاط نوع معين من الاستثناءات في ملف قبض على منع. يمكنك تحديد عدة
هنا مثال…
$error[0].exception.gettype().fullname
في هذا المثال الأول قبض على الكتلة تتعامل مع الأنواع المحددة من الاستثناءات. علاوة على ذلك ، الثانية قبض على مقابض الكتلة تتعامل مع الأخطاء العامة.
كيفية استخراج استثناء الخطأ باستخدام PowerShell حاول Catch
تناول القسم الفرعي الأخير كيفية تحديد مجموعات الصيد المتعددة للتعامل مع أنواع مختلفة من الاستثناءات. في هذا القسم الفرعي ، ستتعلم كيفية استخراج تفاصيل الخطأ في استثناء.
لتوضيح ذلك ، سأستخدم مثالًا استخدمته سابقًا. قم بتشغيل عبارة PowerShell هذه في PowerShell.
($error.CategoryInfo).Reason
الآن قم بتشغيل الخطأ $ بمفرده ...
Get-Content D:PS-Tutorialfolder-names.txt
على الرغم من حفظ معلومات متعددة في المتغير error $ ، إلا أنه يتم تمييز رسالة الخطأ الفعلية في لقطة الشاشة أدناه.

إذا كنت تريد تسجيل هذا الخطأ في ملف نصي ، فأنت تحتاج فقط إلى تسجيل تفاصيل الخطأ الفعلية. لاستخراج هذا الخطأ ، استخدم الأمر أدناه:
$error.Clear(); Try {Get-Content D:PS-Tutorialfolder-names.txt} Catch {}
يستخرج الأمر رسالة الخطأ الفعلية ، تم رفض الوصول إلى المسار 'D: PS-Tutorial folder-names.txt'.

يمكنك كتابة رسالة الخطأ هذه في ملف السجل عن طريق تضمين ملف خارج الملف الأمر في كتلة الصيد.
$error.Clear(); Try {Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch {}قمت بتضمين ملف ألحق المعلمة في خارج الملف الأمر للسماح بتسجيل إدخالات متعددة دون الكتابة فوق الإدخالات السابقة.
لتسهيل فهم الأمر الأخير ، سأعيد كتابته بتنسيق البرنامج النصي أدناه ...
$error[0].exception.gettype().fullname
كيف تشمل أ أخيرا منع إلى PowerShell جرب كاتش بيان - تصريح

يمكنك تضمين ملف أخيرا حظر على PowerShell جرب كاتش بيان - تصريح. الصيغة هي
|_+_|
|_+_|
|_+_|
ال أخيرا يمكن استخدام block لتحرير أي موارد لم تعد بحاجة إليها بواسطة البرنامج النصي.
يتم تشغيل كتلة أخيرًا حتى إذا كنت تستخدم CTRL + C لإيقاف البرنامج النصي. سيتم تشغيل الكتلة أيضًا إذا أوقفت الكلمة الأساسية Exit البرنامج النصي من داخل كتلة Catch.في المثال الأخير ، كان لدي العبارة التي تكتب سجل الأخطاء إلى ملف نصي في قبض على منع. ومع ذلك ، فإن أفضل مكان للحصول على هذا البيان هو ملف أخيرا منع.
راجع النص المعدل أدناه ...
Try { Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch [System.UnauthorizedAccessException] { }
معلومات مفيدة إضافية حول PowerShell جرب Catch

في هذا القسم سوف أشارك بعض المعلومات البسيطة والمفيدة حول PowerShell جرب Catch.
كيفية مسح PowerShell جرب Catch $ Error Automatic Variable
المتغير التلقائي خطأ $ لديه صافي طريقة. يمكنك استخدام هذه الطريقة لمسح جميع الأخطاء المحفوظة في المتغير التلقائي للخطأ $.
لمسح جميع الأخطاء المحفوظة في المتغير التلقائي error $ لجلسة PowerShell الحالية ، قم بتشغيل الأمر أدناه.
$error.Clear(); Try {Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch [System.UnauthorizedAccessException] {}
كيفية عرض رسالة خطأ مخصصة في PowerShell حاول Catch Block
لعرض رسالة خطأ مخصصة في PowerShell Try Catch Block ، استخدم كلمة Throw. هنا مثال…
try { Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Get-EventLog -LogName Systerr } Catch [ System.UnauthorizedAccessException ], [ System.InvalidOperationException ] { } Catch { }
هذه نتيجة هذا البرنامج النصي في PowerShell ISE.

كيفية الحصول على معلومات خطأ CategoryInfo في بوويرشيل حاول الالتقاط
المتغير التلقائي خطأ $ له خاصية تسمى CategoryInfo. لمشاهدة هذه الخاصية والخصائص والأساليب الأخرى ، قم بتشغيل الأمر أدناه ...
$error.Clear(); Try {Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch {}
يتم استدعاء إحدى الخصائص التي تم إرجاعها بواسطة الأمر الأخير CategoryInfo .

للوصول إلى هذه المعلومات ، قم بتشغيل الأمر أدناه.
$error
يقوم هذا الأمر بإرجاع خصائص فرعية متعددة.

يمكن الوصول إلى كل من هذه الخصائص الفرعية عن طريق إضافة اسم الخصائص الفرعية بعد فترة. على سبيل المثال ، لعرض الخصائص الفرعية للسبب ، قم بتشغيل الأمر أدناه.
$error.Exception

كيفية استخدام الكتابة-المضيف لعرض رسائل الخطأ في بوويرشيل حاول الالتقاط
مثل خاصية CategoryInfo في القسم الفرعي الأخير ، فإن المتغير التلقائي للخطأ $ له أيضًا خاصية تسمى استثناء . لعرض الاستثناء في خطأ ما ، قم بتشغيل الأمر أدناه:
$error.Clear(); Try {Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch Out-File D:PS-Tutorialerrorlogs.txt -Append

لسوء الحظ ، إذا حاولت عرض هذه المعلومات باستخدام الأمر Write-Host ، فلن تعمل كما هو متوقع.
$error.Clear() Try { Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch $error.Exception
إليك نتيجة هذا الأمر في PowerShell ...

كما ترى ، يعرض الأمر مجموعة من المعلومات الأخرى. الخبر السار هو ذلك خطأ $ استثناء له خاصية أخرى تسمى رسالة .
يمكنك استدعاء هذه الخاصية الفرعية بإلحاقها بـ خطأ $ استثناء ، مثله…
|_+_|
|_+_|
|_+_|
بالإضافة إلى ذلك ، يمكنك استخدام ملفات اكتب المضيف أمر لعرض معلومات الخطأ هذه ...
$error.Clear() Try { Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch { } Finally $error.Exception
يعرض الأمر الأخير الآن رسالة الخطأ الفعلية ...

كيفية إنشاء Hashtable في PowerShell حاول Catch Block
هناك طريقتان شائعتان يمكنك من خلالهما إنشاء ملف قابل للتجزئة بوويرشيل في كتلة Try Catch.
- يمكنك إنشاء جدول تجزئة بأزواج متعددة من المفاتيح / القيم داخل كتلة المحاولة
- بدلاً من ذلك ، يمكنك إنشاء مفتاح واحد / قيمة قابلة للتجزئة باستخدام امتداد مفتاح خارج جرب Catc h والقيمة داخل جرب Catc ح بلوك.
فيما يلي مثال على الطريقة الأولى ...
$error.Clear()
كما ترون فإن hasttable داخل جرب Catc كتلة h ...
من ناحية أخرى ، يمكنك إنشاء مفتاح واحد قابل للتجزئة بالقيمة المحددة داخل ملف جرب Catc ح بلوك. هنا مثال…
try { Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } catch { Throw 'This is a custom error message' }
للتأكد من أن آخر نص برمجي ينتج PowerShell hashtable ، بعد تشغيل البرنامج النصي ، قمت باستدعاء القيم المحفوظة في المتغير $ hashtable.
كما ترى من نتيجة الأمر الأخير ، فإنه يحتوي على زوج اسم / قيمة!

أمثلة على تجربة PowerShell حاول الالتقاط

في هذا القسم الأخير ، سأغطي أمثلة متعددة لتطبيق PowerShell Try Catch.
كيفية استخدام بوويرشيل جرب كاتش مع Get-Childitem
يمكن للأمر Get-Childitem إرجاع أخطاء متعددة. لتوضيح الخطأين الشائعين ، سأستخدم الأمرين أدناه:
$error | Get-Member
المسار الصحيح للملف النصي المستخدم في الأمر الأخير هو D: PS-Tutorial filelist.txt.
ومع ذلك ، في الأمر الأول قمت بتضمين مسافة بعد D: PS-Tutorial. نتج عن ذلك خطأ (سنحدد تفاصيل الخطأ قريبًا).

أيضًا ، في الأمر الثاني ، حددت المسار الصحيح لكنني استخدمت اسم الملف الخطأ. نتج عن هذا خطأ.
$error.CategoryInfo

للمضي قدمًا ، للحصول على مزيد من المعلومات حول هذه الأخطاء ، سأقوم بتشغيل الأوامر في PowerShell جرب كاتش منع.
$error.CategoryInfo.Reason
مهمتنا الأولى هي تحديد أنواع الأخطاء التي تُرجعها الأوامر. للحصول على هذه المعلومات ، قم بتشغيل الأوامر أدناه ...
$error.Exception
ها هي نتائج الأوامر ...

العودة إلى الحصول على مزيد من المعلومات حول الأخطاء التي تم إلقاؤها بواسطة Get-Childitem الأمر ، استنادًا إلى أنواع الأخطاء ، يمكننا تعديل كتلة Try Catch لالتقاط هذين النوعين من الأخطاء ...
Write-Host $error.Exception
مهمتنا الثانية هي عرض رسائل الخطأ الفعلية. سيقوم هذا الأمر بالمهمة:
$error.Exception.Message
يعرض الأمر رسالتي الخطأ ...

كيفية استخدام بوويرشيل جرب كاتش لتصدير أخطاء Get-WMIObject مع تصدير ملف csv
في هذا القسم الفرعي ، سوف أقوم بتصدير الأخطاء التي تم إنشاؤها عند تشغيل الحصول على WMIObject على جهاز كمبيوتر بعيد إلى ملف CSV بامتداد تصدير- CSV يأمر.
أولاً ، دعنا نرى تفاصيل الخطأ التي تم إنشاؤها عند محاولة الاتصال بجهاز كمبيوتر بعيد غير متصل بالإنترنت باستخدام الحصول على WMIObject . لتوضيح ذلك ، قم بتشغيل الأمر أدناه ...
Write-Host $error.Exception.Message
قام الأمر بإنشاء رسالة خطأ لأن الحاسوب ليس اسم كمبيوتر صالحًا.

للمضي قدمًا ، لإدارة الخطأ ، سأقوم بتشغيل الأمر داخل ملف يحاول كتلة من جرب كاتش بيان.
Try { $hashtable = @{ Name = 'Document' PSProvider = 'FileSystem' Root = 'C:UsersvictoDocuments' }#end of hastable } Catch { }#end of Try Catch block
في السطر الأول من ملف يحاول بلوك ، لقد حددت متغير اسم الكمبيوتر $. ثم ، في السطر الثاني ، قمت بتشغيل ملف الحصول على WmiObject يأمر.
علاوة على ذلك ، في قبض على حظر ، لقد أنشأت تفاصيل الخطأ التي قمت بتصديرها إلى ملف CSV بامتداد تصدير- CSV .
فيما يلي شرح مفصل للبرنامج النصي في ملف يحاول منع:
- في السطر الأول ، قمت بإنشاء متغير مسار $ يحدد المكان الذي أريد حفظ ملف CSV فيه
- بعد ذلك ، في السطر 2 ، استخدمت الأمر Get-Date لإنشاء اسم ملف لملف CSV. اسم الملف بالتنسيق ، yyyyMMdd_HHmmss.csv
- في السطر 3 ، قمت بإنشاء كائن فارغ محفوظ في متغير يسمى بيانات $
- بعد ذلك ، في السطر 4 ، أضفت عمود 'اسم الكمبيوتر' إلى الكائن الذي أنشأته في السطر 3. يأخذ العمود المتغير $ ComputerName
- في السطر 5 ، أضفت وحدة تخزين 'رسالة الخطأ' التي ستحفظ رسائل الخطأ ، خطأ $.Exception.Message
- بعد ذلك ، في السطر 6 ، أنشأت متغيرًا $ csvfilepath يدمج المتغيرات $ path و $ csvfilename لإنشاء مسار كامل لملف CSV
- أخيرًا ، في السطر 7 ، قمت بتوصيل المعلومات المحفوظة في متغير البيانات $ ($ ComputerName و $ error.Exception.Message) في تصدير- CSV وحفظ الملف في $ csvfilepath
توضح لقطة الشاشة أدناه ملف CSV الذي تم إنشاؤه بواسطة البرنامج النصي ...

كيفية اكتشاف أخطاء الحصول على العملية باستخدام PowerShell جرب كاتش بيان - تصريح
إذا قمت بتشغيل الأمر Get-Process بمعرف عملية غير موجود ، فسيعود Microsoft.PowerShell.Commands.ProcessCommandException خطأ.
لالتقاط هذا النوع المحدد من الاستثناءات ، قم بتشغيل أمر مشابه للأمر أدناه:
$hashtable = @{ 'File Name' = Try { (Get-ChildItem -Path D:PS-Tutorialfilelist.txt).Name } Catch { }#end of Try Catch block }#end of hastable
هذه نتيجة البرنامج النصي في PowerShell ISE.

بدلاً من ذلك ، يمكنك تحديد رسالة خطأ مخصصة عن طريق تعديل البرنامج النصي كما هو موضح أدناه ...
Get-Childitem D:PS-Tutorial filelist.txt Get-Childitem D:PS-Tutorialfilelis.txt
الآن يقوم البرنامج النصي بإرجاع رسالة الخطأ المخصصة ...

كيفية اكتشاف أخطاء Get-Mailbox باستخدام PowerShell جرب كاتش بيان - تصريح
إذا قمت بالاتصال بـ Office 365 PowerShell وقمت بتشغيل ملف احصل على صندوق البريد ضد مستخدم غير موجود ، ستصلك رسالة خطأ. أبلغ بعض المستخدمين عن وجود مشكلات في التقاط رسالة الخطأ بتنسيق احصل على صندوق البريد يأمر.
لاختبار هذا السيناريو ، بعد الاتصال بنا حساب Office 365 عبر PowerShell ، قمت بتشغيل البرنامج النصي أدناه:
Get-Childitem D:PS-Tutorialfilelis.txtالمستخدم ، Pius غير موجود في حساب Office 365 الخاص بنا.
أعاد البرنامج النصي رسالة الخطأ تعذر تنفيذ العملية لأنه تعذر العثور على الكائن 'بيوس' في 'AM6PR05A05DC002.EURPR05A005.PROD.OUTLOOK.COM '.
ها هي لقطة الشاشة ...

ومع ذلك، إذا جرب كاتش يكتشف الخطأ ، حاول إضافة نوع الاستثناء كما هو موضح في الأمر المعدل أدناه:
Try { Get-Childitem D:PS-Tutorial filelist.txt -ErrorAction SilentlyContinue Get-Childitem D:PS-Tutorialfilelis.txt -ErrorAction SilentlyContinue } Catch { }
هذا كل شيء - دليلنا الشامل والمحدث حول PowerShell جرب Catch Final لاي! آمل أن تجد أنه من المفيد؟
إذا وجدت أنها مفيدة ، يرجى التصويت نعم إلى هل كان هذا المنشور سؤالًا مفيدًا أدناه.
بدلاً من ذلك ، يمكنك طرح سؤال أو ترك تعليق أو تقديم المزيد من التعليقات باستخدام نموذج 'ترك الرد' الموجود في نهاية هذه الصفحة.
أخيرًا ، لمزيد من مناطق S PowerShell tech ، تفضل بزيارة صفحة دليل Windows PowerShell How-To. قد تجد أيضًا صفحة العمل من الصفحة الرئيسية الخاصة بنا مفيدة جدًا.
المراجع وقراءات إضافية
- حول جرب كاتش أخيرًا
- حول المصيدة
- صفيف PowerShell وإضافته إلى الصفيف: تطبيقات وأمثلة
- شرح Powershell For Loop: النحو والأمثلة