كيفية استخدام PowerShell حاول اللحاق أخيرًا للتعامل مع الأخطاء

15 يوليو 2021 10258 الآراء معلومات مهمة أخرى حول PowerShell حاول

بوويرشيل جرب كاتش يتم استخدام block لمعالجة الأخطاء في البرمجة النصية لـ PowerShell. عند استخدام PowerShell جرب كاتش كتلة للبرمجة يمكنك تحقيق ما يلي:

  1. احصل على البرنامج النصي الخاص بك للاستمرار في العمل على الرغم من حدوث خطأ
  2. عرض رسائل الخطأ والتعامل معها بشكل أفضل

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

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

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

بوويرشيل جرب كاتش بناء الجملة

PowerShell جرب بناء الجملة

بناء جملة بوويرشيل جرب كاتش يكون…

try {}

ال يحاول هو جزء من الكتلة الذي تريد من PowerShell مراقبته بحثًا عن الأخطاء. هذه هي الكتلة مع البرامج النصية الأصلية التي قد ترجع خطأ الإنهاء.

عند حدوث خطأ في كتلة المحاولة ، يحفظ PowerShell الخطأ في المتغير التلقائي $ Error (المزيد حول هذا لاحقًا).

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

ال أخيرا يمكن استخدام block لتحرير أي موارد لم تعد بحاجة إليها بواسطة البرنامج النصي.

الأنواع الشائعة لأخطاء الاستثناء في PowerShell جرب كاتش

أنواع الأخطاء في 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 ...

PowerShell حاول التقاط خطأ CommandNotFoundException

كما ترى من لقطة الشاشة ، فإن نوع الاستثناء (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 حاول التقاط خطأ ManagementObjectNotFoundException

للقبض على هذا الخطأ باستخدام 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 . يتم إلقاء هذا النوع من الخطأ عند محاولة الوصول إلى عنصر ليس لديك إذن قراءة على الأقل.

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

PowerShell حاول التقاط خطأ UnauthorizedAccessException

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

في قسم بناء الجملة من هذا الدليل ، قلت إن البنية العامة لـ 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 $ ، إلا أنه يتم تمييز رسالة الخطأ الفعلية في لقطة الشاشة أدناه.

كيفية استخراج تفاصيل الخطأ باستخدام PowerShell حاول Catch

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

$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 جرب كاتش بيان - تصريح

كيف يتم تضمين A Last Block to PowerShell Try Catch Statement

يمكنك تضمين ملف أخيرا حظر على PowerShell جرب كاتش بيان - تصريح. الصيغة هي

|_+_|  
|_+_|
|_+_|

ال أخيرا يمكن استخدام block لتحرير أي موارد لم تعد بحاجة إليها بواسطة البرنامج النصي.

يتم تشغيل كتلة أخيرًا حتى إذا كنت تستخدم CTRL + C لإيقاف البرنامج النصي. سيتم تشغيل الكتلة أيضًا إذا أوقفت الكلمة الأساسية Exit البرنامج النصي من داخل كتلة Catch.

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

راجع النص المعدل أدناه ...

Try { Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction  Stop  } Catch [System.UnauthorizedAccessException] { }

معلومات مفيدة إضافية حول PowerShell جرب Catch

معلومات مهمة أخرى حول PowerShell حاول

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

كيفية عرض رسالة خطأ مخصصة في PowerShell حاول Catch Block

كيفية الحصول على معلومات خطأ CategoryInfo في بوويرشيل حاول الالتقاط

المتغير التلقائي خطأ $ له خاصية تسمى CategoryInfo. لمشاهدة هذه الخاصية والخصائص والأساليب الأخرى ، قم بتشغيل الأمر أدناه ...

$error.Clear(); Try {Get-Content D:PS-Tutorialfolder-names.txt -ErrorAction Stop } Catch {}

يتم استدعاء إحدى الخصائص التي تم إرجاعها بواسطة الأمر الأخير CategoryInfo .

للوصول إلى هذه المعلومات ، قم بتشغيل الأمر أدناه.

$error

يقوم هذا الأمر بإرجاع خصائص فرعية متعددة.

كيفية الحصول على معلومات خطأ CategoryInfo في بوويرشيل حاول الالتقاط

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

$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.

  1. يمكنك إنشاء جدول تجزئة بأزواج متعددة من المفاتيح / القيم داخل كتلة المحاولة
  2. بدلاً من ذلك ، يمكنك إنشاء مفتاح واحد / قيمة قابلة للتجزئة باستخدام امتداد مفتاح خارج جرب 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 حاول الالتقاط

في هذا القسم الأخير ، سأغطي أمثلة متعددة لتطبيق PowerShell Try Catch.

كيفية استخدام بوويرشيل جرب كاتش مع Get-Childitem

يمكن للأمر Get-Childitem إرجاع أخطاء متعددة. لتوضيح الخطأين الشائعين ، سأستخدم الأمرين أدناه:

$error | Get-Member

المسار الصحيح للملف النصي المستخدم في الأمر الأخير هو D: PS-Tutorial filelist.txt.

ومع ذلك ، في الأمر الأول قمت بتضمين مسافة بعد D: PS-Tutorial. نتج عن ذلك خطأ (سنحدد تفاصيل الخطأ قريبًا).

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

$error.CategoryInfo
كيفية استخدام PowerShell جرب الالتقاط باستخدام Get-Childitem

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

$error.CategoryInfo.Reason

مهمتنا الأولى هي تحديد أنواع الأخطاء التي تُرجعها الأوامر. للحصول على هذه المعلومات ، قم بتشغيل الأوامر أدناه ...

$error.Exception

ها هي نتائج الأوامر ...

كيفية استخدام PowerShell حاول الالتقاط لتصدير أخطاء Get-WMIObject مع Export-csvيتم تخزين الأخطاء المحفوظة في المتغير التلقائي $ error في مصفوفة PowerShell. يتم الوصول إلى كل كائن في المصفوفة بإضافة [0] ، [1] في نهاية المصفوفة. يمثل 0 العنصر الأول في المصفوفة بينما يمثل 1 العنصر الثاني وهكذا.

العودة إلى الحصول على مزيد من المعلومات حول الأخطاء التي تم إلقاؤها بواسطة Get-Childitem الأمر ، استنادًا إلى أنواع الأخطاء ، يمكننا تعديل كتلة Try Catch لالتقاط هذين النوعين من الأخطاء ...

Write-Host $error.Exception

مهمتنا الثانية هي عرض رسائل الخطأ الفعلية. سيقوم هذا الأمر بالمهمة:

$error.Exception.Message

يعرض الأمر رسالتي الخطأ ...

كيفية استخدام بوويرشيل جرب كاتش لتصدير أخطاء Get-WMIObject مع تصدير ملف csv

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

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

Write-Host $error.Exception.Message

قام الأمر بإنشاء رسالة خطأ لأن الحاسوب ليس اسم كمبيوتر صالحًا.

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

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

Try { $hashtable = @{ Name = 'Document' PSProvider = 'FileSystem' Root = 'C:UsersvictoDocuments' }#end of hastable } Catch { }#end of Try Catch block 

في السطر الأول من ملف يحاول بلوك ، لقد حددت متغير اسم الكمبيوتر $. ثم ، في السطر الثاني ، قمت بتشغيل ملف الحصول على WmiObject يأمر.

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

فيما يلي شرح مفصل للبرنامج النصي في ملف يحاول منع:

  1. في السطر الأول ، قمت بإنشاء متغير مسار $ يحدد المكان الذي أريد حفظ ملف CSV فيه
  2. بعد ذلك ، في السطر 2 ، استخدمت الأمر Get-Date لإنشاء اسم ملف لملف CSV. اسم الملف بالتنسيق ، yyyyMMdd_HHmmss.csv
  3. في السطر 3 ، قمت بإنشاء كائن فارغ محفوظ في متغير يسمى بيانات $
  4. بعد ذلك ، في السطر 4 ، أضفت عمود 'اسم الكمبيوتر' إلى الكائن الذي أنشأته في السطر 3. يأخذ العمود المتغير $ ComputerName
  5. في السطر 5 ، أضفت وحدة تخزين 'رسالة الخطأ' التي ستحفظ رسائل الخطأ ، خطأ $.Exception.Message
  6. بعد ذلك ، في السطر 6 ، أنشأت متغيرًا $ csvfilepath يدمج المتغيرات $ path و $ csvfilename لإنشاء مسار كامل لملف CSV
  7. أخيرًا ، في السطر 7 ، قمت بتوصيل المعلومات المحفوظة في متغير البيانات $ ($ ComputerName و $ error.Exception.Message) في تصدير- CSV وحفظ الملف في $ csvfilepath
ال NoTypeInformation المعلمة في الأمر Export-csv تزيل معلومات النوع. اكتشف Tor المزيد ، اقرأ دليلنا ، Powershell NoTypeInformation: التطبيقات والأمثلة

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

المراجع وقراءات إضافية

  1. حول جرب كاتش أخيرًا
  2. حول المصيدة
  3. صفيف PowerShell وإضافته إلى الصفيف: تطبيقات وأمثلة
  4. شرح Powershell For Loop: النحو والأمثلة