باورشيل هو لغة نصوص قوية لا مثيل لها. ولكن لفتح إمكاناته، يجب أن تعرف كيفية استيراد الوحدات الصحيحة.
في هذا البرنامج التعليمي، ستتعلم كل ما تحتاج إلى معرفته لاستيراد وحدات باورشيل مثل المحترفين. مع فهم عميق للأوامر النصية، والمعلمات، والوحدات، يمكنك إنشاء نصوص أسرع وأكثر فعالية من أي وقت مضى.
استمر في القراءة لتعزيز مهاراتك في باورشيل ورفع مستوى لعبتك في البرمجة إلى مستويات جديدة!
المتطلبات المسبقة
سيكون هذا البرنامج التعليمي عرضًا عمليًا. لمتابعة الدرس، تأكد من أن لديك نظام مع باورشيل مثبت. يستخدم هذا البرنامج التعليمي Windows 10 وباورشيل 5.1 كمثال، ولكن نفس الأوامر يجب أن تعمل مع معظم إصدارات Windows وباورشيل.
استيراد وحدة واحدة
تحتوي وحدات باورشيل على رموز مبنية مسبقًا يمكنك استخدامها في نصوص باورشيل الخاصة بك، مما يوفر لك الوقت والجهد. عند استيراد وحدات باورشيل، تستفيد من رموز مبنية مسبقًا بدلاً من بدء العمل من الصفر.
ولكن كيف يمكنك استيراد وحدات PowerShell؟ الأمر Import-Module
هو الطريقة الرئيسية لاستيراد الوحدات في PowerShell. استيراد وحدة واحدة هو واحد من أكثر الاستخدامات الأساسية للأمر Import-Module
، والذي هو أول ما ستتعلمه في هذا البرنامج التعليمي.
افتح PowerShell كمسؤول، وقم بتشغيل الأمر Import-Module
أدناه للبحث عن وحدة PSDiagnostics
وتحميلها في الذاكرة. إذا نجح الأمر، ستتم استيراد الوحدة، ولكن الأمر لا ينتج أي إخراج.
من المستحسن بشدة استيراد الوحدات من مستودعات عبر الإنترنت باستخدام أمر Install-Module عند الإمكان. يعتني هذا الأمر بالتبعيات وإدارة الإصدارات بالنسبة لك.
بمجرد استيراد الوحدة، يمكنك استخدام أي من cmdlets أو functions التي توفرها الوحدة للمساعدة في تشخيص وحل المشكلات. الـ \texttt{Enable-PSTrace} cmdlet هو مثال واحد فقط من بين cmdlets المقدمة من قبل وحدة PSDiagnostics، والتي تمكن تتبع التشخيص في PowerShell.
الآن، قم بتشغيل الأمر التالي \texttt{Enable-PSTrace} لأداء تتبع تشخيصي وحفظ النتائج في المسار المحدد \texttt{-TraceFilePath} (\texttt{C:\\MyTrace.log}). لا يقوم هذا الأمر بتوفير إخراج إلى وحدة التحكم حيث يتم حفظ النتائج في ملف بدلاً من ذلك.
قد تتطلب بعض الوحدات تكوينًا أو إعدادًا إضافيًا قبل أن تتمكن من استخدامها. تأكد من قراءة الوثائق المقدمة مع الوحدة لفهم أي متطلبات أو شروط مسبقة.
استيراد العديد من الوحدات دفعة واحدة
استيراد وحدة واحدة يعمل بشكل جيد. ولكن عندما تحتاج في كثير من الأحيان إلى استيراد العديد من الوحدات دفعة واحدة، فإن المهمة تكون أيضًا ضمن إمكانيات \texttt{Import-Module} cmdlet.
استيراد العديد من الوحدات هو وسيلة رائعة لتوفير الوقت والجهد في PowerShell. ولكن كيف بالضبط؟ ستحدد أسماء الوحدات مفصولة بفواصل.
قم بتشغيل الأمر أدناه للبحث عن عدة وحدات (Dism, PowerShellGet, PSReadline
) وتحميلها في الذاكرة. مثل استيراد وحدة واحدة، هذا الأمر لا يقدم إخراجًا.
عرض تفاصيل استيراد الوحدة
كما ذكر سابقًا، فإن استيراد الوحدة بنجاح لا يقدم إخراجًا. لكن اعترف. ستكون متشككًا ما إذا كانت الوحدة قد تم استيرادها فعلًا أم لا.
المعلمة -Verbose
هي خيار مفيد يمكنك استخدامه مع العديد من أوامر ووظائف PowerShell، بما في ذلك أمر Import-Module
. تخبر هذه المعلمة PowerShell بعرض معلومات مفصلة حول الأمر أثناء تنفيذه. بالتالي، تحصل على ردود فعل قيمة يمكنك استخدامها لتصحيح الأخطاء وتصحيحها.
قم بتشغيل الأمر التالي لاستيراد وحدة SmbShare
، مع إضافة المعلمة -Verbose
لطباعة تفاصيل استيراد الوحدة.
كما يمكن ملاحظة أدناه، توفر المعلمة -Verbose
معلومات مفصلة حول ملف الوحدة الذي يتم تحميله والوظائف المختلفة التي يتم استيرادها من الوحدة. يمكن أن تساعد هذه المعلومات في فهم كيفية عمل الوحدة الداخلية.
في هذه الحالة، توفر وحدة SmbShare
أوامر لإدارة المشاركات SMB على أجهزة Windows. تتضمن هذه الأوامر ولكن لا تقتصر على New-SmbShare
(إنشاء مشاركات جديدة) و Remove-SmbShare
(إزالة المشاركات الحالية).

إعادة استيراد وحدة في نفس الجلسة
سواء كانت وحدتك تتصرف بشكل غير صحيح أو كنت ترغب فقط في التأكد من استخدام الإصدار الأحدث للوحدة الخاصة بك، فإن إعادة استيراد PowerShell هو مفيد. كيف؟ عن طريق إضافة المعلمة -Force
إلى أمر Import-Module
.
هذا المعلمة -Force
تسمح لك بالاستمرار في استخدام الأوامر والوظائف المقدمة من الوحدة دون الحاجة إلى إغلاق وإعادة فتح جلسة PowerShell الخاصة بك.
أحد الاستخدامات الشائعة لإعادة استيراد وحدة هو عندما تكون في عملية التطوير وإجراء التغييرات على الوحدة. يمكنك إعادة استيراد الوحدة إلى الجلسة الحالية لاختبار تلك التغييرات قبل إتمامها.
قم بتشغيل الأمر التالي لإجبار PowerShell على إزالة وإعادة استيراد وحدة SmbShare
من موقعها الأصلي.
المعلمة -Prefix
تتيح لك تحديد بادئة للأوامر والوظائف المستوردة من الوحدة. في هذه الحالة، ستتم إضافة بادئة New
إلى جميع الأوامر والوظائف المستوردة. يمكن أن تكون هذه المعلمة مفيدة لتجنب التضارب مع الأوامر أو الوظائف الموجودة بالفعل في جلستك.
على سبيل المثال، ستصبح الأمر Get-SmbShare
في الوحدة الأصلية Get-NewSmbShare
في الوحدة المعاد استيرادها.
الآن، قم بتشغيل الأمر Get-Command أدناه لاسترداد قائمة بجميع الأوامر والوظائف المقدمة من وحدة SmbShare المحددة (Select-Object) بواسطة الاسم.
أدناه، يمكنك رؤية أن مجموعة الأوامر cmdlets في وحدة SmbShare الآن لديها البادئة جديد المضافة إلى أسمائها. هذا الإخراج يؤكد أن الوحدة قد تم إعادة استيرادها بنجاح.

استخدام حزم 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 الأخرى.

3. بمجرد التنزيل، قم بتشغيل الأمر Unblock-File
الذي لا يوفر إخراجًا، ولكنه يقوم بإلغاء تأمين ملف .nupkg المُنزل. تأكد من تغيير مسار الملف بالمسار الذي قمت بتنزيل الحزمة عليه.
تكمن الحاجة في فتح الحزمة. لماذا؟ قد لا يسمح PowerShell بتنفيذ الملفات المُنزلة من الإنترنت كإجراء أمان لمنع تنفيذ سكربتات قد تكون ضارة
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 |

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

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 بالاسم الفعلي لوحدتك.

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

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

الاستنتاج
مع الوظائف المتصلة أو التعليمات البرمجية المجمعة، تعتبر وحدات PowerShell مغيرات اللعبة. وفي هذا البرنامج التعليمي، لقد تعلمت طرقًا كثيرة لاستيراد وحدات PowerShell إلى جلساتك، بما في ذلك استيراد الوحدات يدويًا من حزمة NuGet. كما لمست أيضًا معلمات مختلفة تتحكم في عملية الاستيراد.
باستخدام هذه التقنيات، يمكنك بسهولة استيراد واستخدام الوحدات لتعزيز النصوص الخاصة بالتشغيل التلقائي الخاصة بك. ولكن لا يجب أن يتوقف التعلم هنا. لماذا لا تأخذ مهارات إدارة وحدات PowerShell الخاصة بك إلى المستوى التالي عن طريق تعلم تصدير أعضاء الوحدة؟
Source:
https://adamtheautomator.com/import-powershell-modules/