كيفية استيراد وحدات PowerShell بمهارة

باورشيل هو لغة نصوص قوية لا مثيل لها. ولكن لفتح إمكاناته، يجب أن تعرف كيفية استيراد الوحدات الصحيحة.

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

استمر في القراءة لتعزيز مهاراتك في باورشيل ورفع مستوى لعبتك في البرمجة إلى مستويات جديدة!

المتطلبات المسبقة

سيكون هذا البرنامج التعليمي عرضًا عمليًا. لمتابعة الدرس، تأكد من أن لديك نظام مع باورشيل مثبت. يستخدم هذا البرنامج التعليمي Windows 10 وباورشيل 5.1 كمثال، ولكن نفس الأوامر يجب أن تعمل مع معظم إصدارات Windows وباورشيل.

استيراد وحدة واحدة

تحتوي وحدات باورشيل على رموز مبنية مسبقًا يمكنك استخدامها في نصوص باورشيل الخاصة بك، مما يوفر لك الوقت والجهد. عند استيراد وحدات باورشيل، تستفيد من رموز مبنية مسبقًا بدلاً من بدء العمل من الصفر.

ولكن كيف يمكنك استيراد وحدات PowerShell؟ الأمر Import-Module هو الطريقة الرئيسية لاستيراد الوحدات في PowerShell. استيراد وحدة واحدة هو واحد من أكثر الاستخدامات الأساسية للأمر Import-Module، والذي هو أول ما ستتعلمه في هذا البرنامج التعليمي.

افتح PowerShell كمسؤول، وقم بتشغيل الأمر Import-Module أدناه للبحث عن وحدة PSDiagnostics وتحميلها في الذاكرة. إذا نجح الأمر، ستتم استيراد الوحدة، ولكن الأمر لا ينتج أي إخراج.

Import-Module PSDiagnostics

من المستحسن بشدة استيراد الوحدات من مستودعات عبر الإنترنت باستخدام أمر Install-Module عند الإمكان. يعتني هذا الأمر بالتبعيات وإدارة الإصدارات بالنسبة لك.

بمجرد استيراد الوحدة، يمكنك استخدام أي من cmdlets أو functions التي توفرها الوحدة للمساعدة في تشخيص وحل المشكلات. الـ \texttt{Enable-PSTrace} cmdlet هو مثال واحد فقط من بين cmdlets المقدمة من قبل وحدة PSDiagnostics، والتي تمكن تتبع التشخيص في PowerShell.

الآن، قم بتشغيل الأمر التالي \texttt{Enable-PSTrace} لأداء تتبع تشخيصي وحفظ النتائج في المسار المحدد \texttt{-TraceFilePath} (\texttt{C:\\MyTrace.log}). لا يقوم هذا الأمر بتوفير إخراج إلى وحدة التحكم حيث يتم حفظ النتائج في ملف بدلاً من ذلك.

Enable-PSTrace -TraceLevel 1 -TraceFilePath C:\MyTrace.log

قد تتطلب بعض الوحدات تكوينًا أو إعدادًا إضافيًا قبل أن تتمكن من استخدامها. تأكد من قراءة الوثائق المقدمة مع الوحدة لفهم أي متطلبات أو شروط مسبقة.

استيراد العديد من الوحدات دفعة واحدة

استيراد وحدة واحدة يعمل بشكل جيد. ولكن عندما تحتاج في كثير من الأحيان إلى استيراد العديد من الوحدات دفعة واحدة، فإن المهمة تكون أيضًا ضمن إمكانيات \texttt{Import-Module} cmdlet.

استيراد العديد من الوحدات هو وسيلة رائعة لتوفير الوقت والجهد في PowerShell. ولكن كيف بالضبط؟ ستحدد أسماء الوحدات مفصولة بفواصل.

قم بتشغيل الأمر أدناه للبحث عن عدة وحدات (Dism, PowerShellGet, PSReadline) وتحميلها في الذاكرة. مثل استيراد وحدة واحدة، هذا الأمر لا يقدم إخراجًا.

Import-Module Dism, PowerShellGet, PSReadline

عرض تفاصيل استيراد الوحدة

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

المعلمة -Verbose هي خيار مفيد يمكنك استخدامه مع العديد من أوامر ووظائف PowerShell، بما في ذلك أمر Import-Module. تخبر هذه المعلمة PowerShell بعرض معلومات مفصلة حول الأمر أثناء تنفيذه. بالتالي، تحصل على ردود فعل قيمة يمكنك استخدامها لتصحيح الأخطاء وتصحيحها.

قم بتشغيل الأمر التالي لاستيراد وحدة SmbShare، مع إضافة المعلمة -Verbose لطباعة تفاصيل استيراد الوحدة.

Import-Module SmbShare -Verbose

كما يمكن ملاحظة أدناه، توفر المعلمة -Verbose معلومات مفصلة حول ملف الوحدة الذي يتم تحميله والوظائف المختلفة التي يتم استيرادها من الوحدة. يمكن أن تساعد هذه المعلومات في فهم كيفية عمل الوحدة الداخلية.

في هذه الحالة، توفر وحدة SmbShare أوامر لإدارة المشاركات SMB على أجهزة Windows. تتضمن هذه الأوامر ولكن لا تقتصر على New-SmbShare (إنشاء مشاركات جديدة) و Remove-SmbShare (إزالة المشاركات الحالية).

Displaying module import details

إعادة استيراد وحدة في نفس الجلسة

سواء كانت وحدتك تتصرف بشكل غير صحيح أو كنت ترغب فقط في التأكد من استخدام الإصدار الأحدث للوحدة الخاصة بك، فإن إعادة استيراد PowerShell هو مفيد. كيف؟ عن طريق إضافة المعلمة -Force إلى أمر Import-Module.

هذا المعلمة -Force تسمح لك بالاستمرار في استخدام الأوامر والوظائف المقدمة من الوحدة دون الحاجة إلى إغلاق وإعادة فتح جلسة PowerShell الخاصة بك.

أحد الاستخدامات الشائعة لإعادة استيراد وحدة هو عندما تكون في عملية التطوير وإجراء التغييرات على الوحدة. يمكنك إعادة استيراد الوحدة إلى الجلسة الحالية لاختبار تلك التغييرات قبل إتمامها.

قم بتشغيل الأمر التالي لإجبار PowerShell على إزالة وإعادة استيراد وحدة SmbShare من موقعها الأصلي.

المعلمة -Prefix تتيح لك تحديد بادئة للأوامر والوظائف المستوردة من الوحدة. في هذه الحالة، ستتم إضافة بادئة New إلى جميع الأوامر والوظائف المستوردة. يمكن أن تكون هذه المعلمة مفيدة لتجنب التضارب مع الأوامر أو الوظائف الموجودة بالفعل في جلستك.

على سبيل المثال، ستصبح الأمر Get-SmbShare في الوحدة الأصلية Get-NewSmbShare في الوحدة المعاد استيرادها.

Import-Module SmbShare -Force -Prefix New

الآن، قم بتشغيل الأمر Get-Command أدناه لاسترداد قائمة بجميع الأوامر والوظائف المقدمة من وحدة SmbShare المحددة (Select-Object) بواسطة الاسم.

Get-Command -Module SmbShare | Select-Object Name

أدناه، يمكنك رؤية أن مجموعة الأوامر cmdlets في وحدة SmbShare الآن لديها البادئة جديد المضافة إلى أسمائها. هذا الإخراج يؤكد أن الوحدة قد تم إعادة استيرادها بنجاح.

Verifying the SmbShare module has been reimported

استخدام حزم NuGet لاستيراد وحدات PowerShell يدويًا

حتى الآن، لقد قمت بنجاح باستيراد وحدات من معرض PowerShell. ولكن ماذا لو كانت الوحدة التي تبحث عنها غير متوفرة هناك؟

يمكنك تثبيت واستيراد وحدات PowerShell يدويًا من حزمة NuGet. في سياق PowerShell، حزمة NuGet هي مجموعة من الملفات تشمل وحدة PowerShell بالإضافة إلى أي وحدات تعتمد عليها أو مكتبات مطلوبة لعمل الوحدة.

لاستيراد وحدة من حزمة NuGet، تحتاج إلى تنزيل واستخراج وتثبيت حزمة NuGet يدويًا بالخطوات التالية:

1. انتقل إلى صفحة معرض PowerShell Azure لوحدة Az.Automation.

2. بعد ذلك، انقر على علامة التبويب التنزيل اليدويتنزيل ملف nupkg الخام لتنزيل الحزمة. يستخدم هذا البرنامج التعليمي وحدة Az.Automation 1.9.1 من معرض PowerShell لـ Azure كمثال. ولكن نفس الخطوات تنطبق على حزم NuGet الأخرى.

Downloading the raw NuGet package (nupkg) file

3. بمجرد التنزيل، قم بتشغيل الأمر Unblock-File الذي لا يوفر إخراجًا، ولكنه يقوم بإلغاء تأمين ملف .nupkg المُنزل. تأكد من تغيير مسار الملف بالمسار الذي قمت بتنزيل الحزمة عليه.

تكمن الحاجة في فتح الحزمة. لماذا؟ قد لا يسمح PowerShell بتنفيذ الملفات المُنزلة من الإنترنت كإجراء أمان لمنع تنفيذ سكربتات قد تكون ضارة

Unblock-File -Path C:\PSModules\az.automation.1.9.1.nupkg

4. الآن، قم بفك ضغط الملف .nupkg الذي تم تنزيله إلى مجلد على جهازك المحلي. قد تحتاج إلى أداة ضغط/فك الضغط مثل 7-zip أو WinRAR لفك الحزمة. حيث يعد حزمة NuGet أرشيف ZIP يحتوي على مجموعة من الملفات التي تشكل وحدة.

5. احذف المحتويات التالية من المجلد المستخرج.

تتضمن محتويات حزمة NuGet المستخرجة بعض البيانات الوصفية والملفات التي لا تلزم لتثبيت الوحدة يدويًا.

Name Type
_rels Folder
Package Folder
[Content_Types].xml XML File
Az.Automation.nuspec XML Manifest File
Deleting unnecessary contents from the extracted NuGet package folder

6. قم بإعادة تسمية المجلد الذي تم استخراجه بـ اسم أكثر وصفًا مثل az.automation لتجنب أي أخطاء قد تظهر. تأكد من الاحتفاظ بجميع الحروف في الحالة الصغيرة وتجنب استخدام أحرف خاصة في اسمه.

7. فيما بعد، قم بتشغيل الأمر $env:PSModulePath أدناه للعثور على مسارات وحدة التشغيل الخاصة بك. يعيد هذا الأمر قائمة بجميع مسارات الوحدة الافتراضية على نظامك. يقوم PowerShell بالبحث في هذه المسارات لتحميل الوحدات تلقائيًا عند تحديد اسم الوحدة في سيناريو أو أمر.

$env:PSModulePath

قم بتدوين هذه المسارات، حيث ستحتاج إليها في الخطوة التالية.

Finding out where your modules’ paths are located

8. انسخ المجلد الذي تم تسميته حديثًا (az.automation) إلى أحد الدلائل التي لاحظتها في الخطوة السابعة. بذلك تعرف نطاق الوحدة (محددًا أو لجميع المستخدمين).

Path Function
C:\Users\admin\Documents\WindowsPowerShell\Modules Makes the module available for the specific user account (admin). This tutorial uses this location as an example.
C:\Program Files\WindowsPowerShell\Modules Makes the module available for all user accounts on your local machine.

9. الآن، قم بتشغيل الأمر أدناه لتثبيت واستيراد الوحدة (az.automation) إلى جلسة PowerShell الخاصة بك. تأكد من استبدال az.automation بالاسم الفعلي لوحدتك.

Import-Module -Name az.automation -Verbose
Installing and importing a module from a NuGet package

10. وأخيرًا، قم بتشغيل الأمر التالي Get-Module للتحقق مما إذا كانت الوحدة (az.automation) قد تم استيرادها بنجاح.

Get-Module -Name az.automation
Verifying the module has been imported successfully

ربما لا ترغب في الاعتماد على الاكتشاف التلقائي. إذا كان الأمر كذلك، فحدد موقع الملف الدقيق (C:\az.automation) عند استيراد الوحدة.

Import-Module -Name C:\az.automation -Verbose
Specifying the exact file location when importing a module

الاستنتاج

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

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

Source:
https://adamtheautomator.com/import-powershell-modules/