عادة ما تكون معالجة الأخطاء من أكثر جوانب البرمجة مضيعة للوقت والمملة. الميزات المتقدمة لـ PowerShell لها ميزات مفيدة للغاية.يمكنك استخدام طرق متعددة للتحقق من المعلمات ، ثم تقييم الوظيفة ككل. إن تجنب البيانات السيئة من خلال التحقق من المعلمات يجعل مهمة المبرمج أسهل بكثير.
في الماضي ، لم تكن الأخطاء التي تم تمريرها للمستخدمين مفيدة جدًا دائمًا. بدءًا من PowerShell Core والاستمرار في PowerShell 7 ، يمكنك تحديد رسائل خطأ مخصصة. يمكنك تحديد الأخطاء الخاصة بك بدلاً من استخدام الأخطاء الافتراضية بناءً على زخارف المعلمات. تعرف على كيفية تحسين ميزاتك المتقدمة للاستفادة من هذه الميزة الجديدة!
ما هذا ErrorMessage
السمات؟
ربما تكون قد شاهدت معدِّلات المعلمات ، مثل ValidateScript
قبل (في حالة استخدامها) ، وجد أن رسائل الخطأ لم تكن دائمًا هي الأكثر وصفية. عادة ، من المفيد أن تصنع رسالتك الخاصة لتعكس وظيفة الوظيفة بشكل أكثر دقة ومعلومات حول سبب حدوثها بشكل خاطئ.ثلاثة معدّلات للتحقق من المعلمات لها ميزات إضافية ErrorMessage
الممتلكات المتاحة لهم.
ValidateSet
ValidateScript
ValidatePattern
ماذا تفعل هذه السمة في الواقع؟ أولاً ، دعونا نلقي نظرة على الطريقة القديمة للقيام بذلك.في نموذج التعليمات البرمجية أدناه ، نستخدم ValidatePattern
اختبر ما إذا كانت السلسلة تتكون من 8 أرقام. إذا لم يتم توفير السلسلة المكونة من أرقام كاملة ، فسوف نتلقى رسالة خطأ ، والتي يمكن اعتبارها سرية وليست مفيدة جدًا لمستخدمي وظيفتك.
Function Examination-ValidatePattern
[CmdletBinding()]
Param (
[ValidatePattern('^\d8$')]
[String]$Digits
)
Approach
Publish-Output $Digits
أين هي ErrorMessage
ثم تعال. حسنًا ، بمجرد إضافة سمات أخرى وتحديد رسالة الخطأ ليتم عرضها للمستخدم النهائي ، يمكننا جعل هذه الميزة أكثر فائدة وسهولة في الاستخدام.
Operate Exam-ValidatePattern
[CmdletBinding()]
Param (
[ValidatePattern('^\d8$',ErrorMessage = "Please use an 8 digit numeric value.")]
[String]$Digits
)
Method
Generate-Output $Digits
وسعت ErrorMessage
خاصية
استعمال ErrorMessage
المعلمات تجعل عرض الخطأ أكثر إنسانية. السمة المفقودة هي القيمة التي تمررها بنفسها. في رسالة الخطأ الافتراضية الأصلية ، ربما لاحظت أنه يتم عرض القيمة الواردة ونمط التعبير العادي للتحقق من الصحة في رسالة الخطأ. لحسن الحظ ، باستخدام صيغة مشابهة لعامل التنسيق في PowerShell ، يمكننا أيضًا تضمين هذه القيم في رسالة الخطأ.
– القيمة مرت.
1
– وضع التعبير العادي.
Perform Test-ValidatePattern
[CmdletBinding()]
Param (
[ValidatePattern('^\d8$',ErrorMessage = "0 is not an 8 digit numeric value fitting the pattern, 1")]
[String]$Digits
)
System
Compose-Output $Digits
تعمل هذه الصيغة بنفس الطريقة مع جميع أدوات تزيين التحقق الثلاثة. معلمة التنسيق الأولى هي التمثيل النصي للقيمة التي سيتم تمريرها ، بينما معلمة التنسيق الثانية هي المجموعة أو البرنامج النصي أو الوضع المراد مقارنته به.
أمثلة أخرى على الاستخدام ErrorMessage
لتوضيح كيفية الاستخدام ErrorMessage
فيك ValidateSet
، ValidateScript
مع ValidatePattern
يمكن لمصمم الديكور نقل خطوة التحقق من البداية أو داخل كتلة العملية إلى المعلمة نفسها.دعنا ننظر إلى الوظيفة التي تستخدم جميع أدوات تزيين المعلمات الثلاثة.
Operate Get-Pc
[CmdletBinding()]
Param (
[ValidatePattern('^NET-\d8$',ErrorMessage = "0 is not an 8 digit numeric value preceded by 'NET-' fitting the pattern, 1")]
[String]$ComputerName,
[ValidateSet('Desktop','Laptop','Mobile',ErrorMessage = "0 is not one of the allowed devices, 1")]
[String]$Form,
[ValidateScript(
$_ -GT (Get-Date)
,ErrorMessage = "The expiration date, 0, is not greater than the current date per the following script: 1")]
[DateTime]$ExpirationDate
)
Course of action
[PSCustomObject]@
"ComputerName" = $ComputerName
"Kind" = $Style
"ExpireDate" = $ExpirationDate
كما ترى ، بعد التحقق من كل معلمة ، إذا لم يتم تمرير أي قيمة ، فسيتوقف التنفيذ. إذا تم توفير قيم خطأ متعددة ، فإن الخطأ الأول فقط سوف يخطئ بالفعل ، ولن يتم عرض الأخطاء اللاحقة حتى يتم تصحيح القيمة.
فى الختام
لوظائف إضافية ValidateSet
، ValidateScript
مع ValidatePattern
يعتبر مصمم البارامترات انتصارًا كبيرًا لإمكانية استخدام ميزات PowerShell المتقدمة. يمكن عرض رسائل الخطأ المناسبة بدلاً من رسائل الخطأ الضمنية التي لها أقل قيمة للمستخدم الذي يقوم بتشغيل الوظيفة لاكتساب نظرة ثاقبة على الخطأ. يؤدي هذا إلى نقل معالجة الأخطاء إلى مستوى أعلى من كتلة البداية أو العملية ، مما يجعل الكود أكثر إيجازًا ووضوحًا.
نظرًا لأن هذه الميزة متوفرة في PowerShell Main و PowerShell 7 ، فستحتاج إلى إصدار محدث من PowerShell للاستفادة من هذه الميزة. تجلب الترقية العديد من المزايا المتعلقة بالسرعة والأمان والوظيفة. استخدم هذه الخاصية المفيدة لتحسين وظائفك المتقدمة وجعل حياة مستخدمي وظيفتك أسهل!