تمرين - المعلمات
إحدى الطرق جعل البرامج النصية الخاصة بك مرنة هي استخدام المعلمات بحيث يمكن للمستخدمين تزويد الإدخال عند تشغيل البرنامج النصي. في هذا التمرين، ستنشئ نسخة احتياطية من البرنامج النصي وتضيف معلمات إليه.
إشعار
هذا التمرين اختياري. إذا كنت ترغب في إكمال هذا التمرين، فستحتاج إلى إنشاء اشتراك Azure قبل البدء. إذا لم يكن لديك حساب Azure أو كنت لا ترغب في إنشاء حساب في الوقت الحالي، فيمكنك قراءة الإرشادات حتى تفهم المعلومات التي يتم تقديمها.
إشعار
في هذه الوحدة، يمكنك استخدام Azure Cloud Shell كمحطة طرفية. يمكنك الوصول إلى Cloud Shell من خلال مدخل Microsoft Azure أو تسجيل الدخول إلى Cloud Shell. لست مضطرا لتثبيت أي شيء على جهاز الكمبيوتر أو الكمبيوتر المحمول لاستخدامه.
إنشاء نسخة احتياطية من البرنامج النصي
تتمثل المهمة الشائعة في إنشاء نسخة احتياطية. عادةً ما تكون النسخة الاحتياطية عبارة عن ملف مضغوط يخزن جميع الملفات التي تنتمي إلى أحد التطبيقات، على سبيل المثال. عندما تثبت PowerShell، تحصل على أمر cmdlet Compress-Archive، والذي يمكن أن يساعدك على إكمال هذه المهمة.
افتح Azure Cloud Shell وقم بتشغيل أوامر bash التالية:
mkdir app cd app touch index.html app.js cd ..يجب أن يكون لديك الآن دليلًا يسمى التطبيق. أنت على استعداد للعمل مع PowerShell.
في المحطة الطرفية نفسها، ابدأ تشغيل واجهة PowerShell (إذا لم تكن قد بدأت تشغيلها بالفعل) عن طريق تشغيل
pwsh:pwshإنشاء ملف برنامج نصي يسمى Backup.ps1 في الدليل الحالي ثم فتحه في محرر التعليمات البرمجية.
touch Backup.ps1 code Backup.ps1أضِف المحتوى التالي إلى الملف واحفظه. يمكنك استخدام CTRL+S على Windows وLinux أو CMD+S على الـ Mac للحفظ.
$date = Get-Date -format "yyyy-MM-dd" Compress-Archive -Path './app' -CompressionLevel 'Fastest' -DestinationPath "./backup-$date" Write-Host "Created backup at $('./backup-' + $date + '.zip')"يستدعي البرنامج النصي
Compress-Archiveويستخدم ثلاث معلمات:-
-Pathهو دليل الملفات التي تريد ضغطها. -
-CompressionLevelيحدد مقدار ضغط الملفات. -
-DestinationPathهو المسار إلى الملف المضغوط الناتج.
-
قم بتشغيل البرنامج النصي:
./Backup.ps1ينبغي لك أن تشاهد هذا الإخراج:
Created backup at ./backup-<current date as YYYY-MM-DD>.zip
أضِف معلمات إلى برنامجك النصي
إذا أضفت معلمات إلى برنامجك النصي، يمكن للمستخدمين تزويد القيم عند تشغيله. ستضيف معلمات إلى النسخة الاحتياطية من البرنامج النصي لتمكين تكوين مواقع الملفات المصدر والملف المضغوط الناتج.
أضِف التعليمات البرمجية التالية إلى أعلى الملف Backup.ps1.
إشعار
استخدم الأمر
code Backup.ps1لفتح الملف إذا لم يكن المحرر مفتوحًا.Param( [string]$Path = './app', [string]$DestinationPath = './' )لقد أضفت معلمتين إلى برنامجك النصي:
$Pathو$DestinationPath. كما زودت قيمًا افتراضية حتى لا يحتاج المستخدمون إلى تزويد القيم. يمكن للمستخدمين تجاوز القيم الافتراضية إذا احتاجوا إلى ذلك. تحتاج إلى ضبط البرنامج النصي لاستخدام هذه المعلمات. ستفعل ذلك لاحقًا.غيَّر التعليمة البرمجية في الملف لاستخدام المعلمات، ثم احفظ الملف. يجب أن تبدو Backup.ps1 الآن على هذا النحو:
Param( [string]$Path = './app', [string]$DestinationPath = './' ) $date = Get-Date -format "yyyy-MM-dd" Compress-Archive -Path $Path -CompressionLevel 'Fastest' -DestinationPath "$($DestinationPath + 'backup-' + $date)" Write-Host "Created backup at $($DestinationPath + 'backup-' + $date + '.zip')"أعِد تسمية الدليل app خاصتك إلى webapp عن طريق تشغيل هذا الأمر:
mv app webappإعادة تسمية الدليل app تحاكي حقيقة أن جميع الدلائل التي ستحتاج إلى عمل نسخة احتياطية لها ستُدعى app.
لم يعد بإمكانك الاعتماد على القيمة الافتراضية لـ
$Path. ستحتاج إلى تزويد قيمة عبر وحدة التحكم عندما تشغل البرنامج النصي.قم بإزالة ملف النسخ الاحتياطي الخاص بك، واستبدال
<current date as YYYY-MM-DD>بالتاريخ الحالي:rm backup-<current date as YYYY-MM-DD>.zipأنت تزيل هذا الملف للتأكد من تلقيك لرسالة تفيد بأن قيمتك
$Pathغير موجودة. وإلا، فستتلقى رسالة عن الملف المضغوط الموجود بالفعل، وستكون المشكلة التي نحاول إصلاحها مخفية.شغَّل برنامجك النصي دون تزويد معلمات. (سيستخدم البرنامج النصي القيم الافتراضية للمعلمات.)
./Backup.ps1سترى رسالة خطأ مشابهة لهذه الرسالة:
Line | 8 | Compress-Archive -Path $Path -CompressionLevel 'Fastest' -Destination … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The path './app' either does not exist or is not a valid file system path. Created backup at ./backup-<current date as YYYY-MM-DD>.zipيخطرك البرنامج النصي أنه لا يمكنه العثور على الدليل app/.. حان الآن الوقت لتزويد قيمة للمعلمة
$Pathومعرفة فائدة إضافة معلمات إلى برنامجك النصي.اختبر برنامجك النصي عن طريق تشغيله:
./Backup.ps1 -Path './webapp'سترى رسالة مشابهة للرسالة التي تلقيتها سابقًا:
Created backup at ./backup-<current date as YYYY-MM-DD>.zipيمكنك الآن استخدام المعلمات في حالة لم يكن الدليل الذي تريد عمل نسخة احتياطية منه يُسمى app/. أو إذا كنت تريد وضع الملف المضغوط في مكانٍ آخر غير الدليل الحالي.
تهانينا. لقد أنشأت نسخة احتياطية من البرنامج النصي يمكنك استخدامها متى أردت إنشاء نسخة احتياطية لدليل التطبيق أو أي دليل مهم آخر. ثم حددت بعد ذلك أجزاء من برنامجك النصي قد تحتاج إلى التغيير في الغالب واستبدلت قيم المعلمات بالقيم الثابتة. وبهذه الطريقة، لن تحتاج على الأرجح إلى تغيير البرنامج النصي نفسه عند تغيير متطلباتك (على سبيل المثال، إذا تغير اسم التطبيق أو كنت بحاجة إلى تغيير مسار الوجهة).