تكنولوجيا

خطأ في التحقق من صحة المعلمة المخصصة في PowerShell – CloudSavvy IT

عادة ما تكون معالجة الأخطاء من أكثر جوانب البرمجة مضيعة للوقت والمملة. الميزات المتقدمة لـ 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 للاستفادة من هذه الميزة. تجلب الترقية العديد من المزايا المتعلقة بالسرعة والأمان والوظيفة. استخدم هذه الخاصية المفيدة لتحسين وظائفك المتقدمة وجعل حياة مستخدمي وظيفتك أسهل!

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى