هل سبق لك أن قمت بتشغيل أمر PowerShell وتلقيت رسالة الخطأ المخيفة “المصطلح غير معترف به كاسم cmdlet”؟ إليك المفاجأة: قد تكون المشكلة بسيطة مثل وجود وحدة مفقودة أو غير مستوردة. حتى في إصدارات PowerShell الحديثة، فإن فهم كيفية عمل الوحدات هو المفتاح لتشخيص هذه المشكلات وإصلاحها.
الخبر الجيد؟ يغطي هذا الدليل كل شيء من التحقق من الوحدات التي تم استيرادها حاليًا في PowerShell إلى إتقان كيفية استيرادها وإزالتها وإعادة استيرادها. بحلول النهاية، ستكتسب مهارات إدارة وحدات PowerShell بسلاسة، سواء في حل الأخطاء غير المتوقعة أو العمل على وحدات مخصصة.
استعد ودع وحدات PowerShell تساعدك في تحسين سير العمل الخاص بك بثقة!
التحقق من الوحدات المستوردة
يمكن أن تفشل أوامر PowerShell برسائل خطأ غامضة عندما لا يتم تحميل الوحدات بشكل صحيح. على سبيل المثال، محاولة تشغيل Get-ADUser دون استيراد وحدة ActiveDirectory أولاً ستؤدي إلى ظهور خطأ “لم يتم العثور على الأمر”. وبالمثل، يتطلب استخدام أوامر Azure وجود وحدة Az في جلستك.
يجب على PowerShell استيراد الوحدة ذات الصلة لضمان عمل الأوامر كما هو متوقع وجعل أوامره متاحة.
لعرض الوحدات المستوردة حاليًا، استخدم:
Get-Module
عند تشغيل Get-Module، سترى مخرجات مشابهة لهذا:
ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}
هذا يعرض قائمة بجميع الوحدات المحملة حاليًا في جلسة PowerShell الخاصة بك، موضحة نوعها (Manifest، Script، أو Binary)، ورقم الإصدار، واسم الوحدة، وملخص للأوامر التي تقدمها. تظهر عمود ExportedCommands أي cmdlets متاحة من كل وحدة.
بعد ذلك، افحص الأوامر من وحدة يمكنك استيرادها:
Get-Module -Name SmbShare -ListAvailable | Select exportedcommands
عند تشغيل هذا الأمر، سترى مخرجات تسرد جميع الأوامر المتاحة في وحدة SmbShare. على سبيل المثال:
ExportedCommands ---------------- {Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}
تظهر هذه المخرجات جميع الأوامر التي يمكنك استخدامها من وحدة SmbShare. كل أمر له غرض محدد لإدارة مشاركات SMB:
- Get-SmbShare: يسرد جميع مشاركات SMB على النظام
- New-SmbShare: ينشئ مشاركة SMB جديدة
- Remove-SmbShare: يحذف مشاركة SMB موجودة
- Set-SmbShare: يعدل خصائص مشاركة موجودة
فهم الأوامر المتاحة يساعدك في اختيار الأداة المناسبة لمهمتك. يمكنك استخدام أوامر مشابهة لاستكشاف قدرات وحدات أخرى.
استيراد الوحدات تلقائيًا
لرؤية كيفية تعامل PowerShell مع الوحدات ديناميكيًا، إليك مثال يوضح تحميل الوحدات الديناميكي:
PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} PS> Get-SmbShare PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare...}
كما هو موضح أعلاه، عندما تقوم بتشغيل Get-SmbShare، يقوم PowerShell تلقائيًا باستيراد وحدة SmbShare. يمكنك رؤية أن هذه الوحدة تظهر في القائمة بعد تشغيل الأمر.
إزالة وإعادة استيراد الوحدات
قد تحتاج إلى مسح وحدة من الذاكرة، مثل عند اختبار تكوينات جديدة أو حل النزاعات. إذا كان الأمر كذلك، فلا داعي للقلق؛ يتيح لك PowerShell إزالة وحدة دون إلغاء تثبيتها، مما يمكنك من إعادة تعيين أو تحديث الجلسة حسب الحاجة.
لإزالة وحدة من الذاكرة:
Remove-Module -Name SmbShare
يقوم الأمر Remove-Module
بإزالة الوحدة من الذاكرة ولكنه لا يقوم بإلغاء تثبيتها من نظامك. بينما يعد إزالة الوحدات نادرًا في الاستخدام اليومي، إلا أنه مفيد في سيناريوهات محددة.
لإعادة استيراد الوحدة يدويًا:
Import-Module -Name SmbShare
يمكن أن يكون الاستيراد اليدوي مفيدًا عند استكشاف الأخطاء أو العمل في بيئات مخصصة.
إعادة استيراد الوحدات بعد التغييرات
عند العمل على وحدة قيد التطوير، قد تواجه حالات لا تؤثر فيها التغييرات التي تجريها على الفور. قد تظل البيانات أو الإعدادات القديمة محملة في الوحدة، مما يتسبب في هذا السلوك.
تضمن إعادة استيراد الوحدة أن PowerShell يستخدم أحدث إصدار. إذا قمت بتعديل وحدة تقوم بتطويرها، يجب عليك إعادة استيرادها.
يمكنك استخدام كل من Remove-Module
و Import-Module
أو تبسيط العملية باستخدام معامل Force
:
Import-Module -Name SmbShare -Force
يقوم معامل Force
بإلغاء تحميل وإعادة تحميل الوحدة في خطوة واحدة، مما يجعلها مثالية لعمليات التطوير والاختبار.
الخاتمة
في هذا الدليل، تعلمت كيفية إدارة وحدات PowerShell—التحقق من الاستيرادات واستيراد وإزالة وإعادة استيراد الوحدات. كما استكشفت كيفية استيراد PowerShell للوحدات ديناميكيًا وكيفية التحكم في التحميل لاستكشاف الأخطاء أو اختبار الإعدادات المخصصة يدويًا.
الآن، طبق هذه المهارات من خلال التجربة مع الوحدات المخصصة في نصوصك. استكشف تطوير الوحدات واستخدم معامل Force
لضمان تأثير التغييرات.
حسّن من عملية استكشاف الأخطاء وحلها، وتطوير السكريبتات، وتدفق العمل العام لـ PowerShell باستخدام وحدات PowerShell!
Source:
https://adamtheautomator.com/powershell-modules-guide-2/