عيادي طاهر | مبادىء أساسية في ال Powershell

مبادىء أساسية في ال Powershell

تاريخ النشر: 2022-02-01


تعد الواجهة الرسومية الخيار الأسهل غالبا لتنفيذ مختلف الأنشطة على مستوى أي نظام تشغيل، لكن هذا الخيار ليس متاحا دائما في الخوادم لأن بعض العمليات المرتبطة بالأنشطة المعقدة والمتقدمة لا يمكن تنفيذها الاعن طريق سطر الأوامر Command Line ، إضافة الى أنه عادة نحتاج الى تنفيذ أمر واحد على عدة أجهزة في نفس الوقت ، أو ببساطة لأن الواجهة الرسومية غير متاحة لأسباب أمنية أو لأنها غير موجودة كما في حالة Server Core .

في هذه الحالة أحسن خيار بالنسبة لأنظمة Windows Server هو استعمال Powershell الذي يتيح عديد الخيارات سنتعرف على بعض منها في هذا المقال.

ماهو Windows Powershell

يمكن اعتبار Windows PowerShell كمحرك أتمتة موجه للكائنات ولغة برمجة نصية scripting language مع هيكل سطر أوامر تفاعلي مصمم لغرض إدارة الأنظمة وأتمتة المهام المتكررة.موجود في جميع أنظمة Microsoft Windows بدءا من Windows Server 2003 ، وموجه خصيصا ﻷنظمة ميكروسوفت.

لفتح نافذة Powershell اكتب في خانة البحث في قائمة إبدأ Powershell وسيظهر نوعين منه :

Powershell Start Menu search
Powershell Start Menu search

Powershell سطر الأوامر: كما هو موضح في الصورة:

powershell command line
Powershell Command Line

Powershell ISE (Integrated Scripting Envirenement) : أفضل خيار للعمل مع لغة البرمجة النصية ، لأنه يوفر تمييز بناء الجملة syntax highlighting والتعبئة التلقائية auto-complete للأوامر وميزات أخرى مما يجعل تطوير البرامج أسرع وارتكاب للأخطاء أقل، وهو ما يظهر في الصورة التالية:

powershell ISE
Powershell ISE

تنبيه: قد تحتاج في بعض الأحيان استعمال Powershell بصلاحيات المدير Run As Administrator

تشغيل ملف أو script powershell

أي ملف سكريبت powershell له امتداد ps1. ويمكن تشغيله باحدى طريقتين:

عن طريق اختيار Run with powershell من قائمة الاختيارات بالضغط على يمين الفأرة:

powershell run with

وإما عن طريق سطر الأوامر : وذلك بكتابة إسم الملف مع الأمتداد

run powershell script

في كلتا الحالتين السابقتين ، لا يمكن تنفيذ أي برنامج powershell نصي ما لم تقم بتعديل سياسة تقييد البرامج النصية.

سياسة التحقق وتنفيذ البرامج النصية Pwershell Excution Policy

في الحالة الاعتيادية هناك سياسة تقيد تنفيذ البرنامج النصي لأي script powershell ، وذلك لحماية النظام من أي برامج خبيثة.

يمكنك التحقق من هذه السياسة عن طريق تشغيل الأمر التالي:


Get-ExecutionPolicy
Restricted

نلاحظ أن السياسة الإعتيادية هي : Restricted وهو مايفسر ظهور رسالة الخطأ السابقة عند محاولتنا تشغيل ملف powershell عن طريق سطر الأوامر.

لبدء العمل مع PowerShell ، ستحتاج إلى تغيير إعداد السياسة من Restricted إلى RemoteSigned :


Set-ExecutionPolicy RemoteSigned

قائمة السياسات الممكنة موضحة في الجدول التالي:

السياسة الإمكانية
Restricted لا يُسمح بأي نصوص برمجية. هذا هو الإعداد الافتراضي ، لذلك ستراه في المرة الأولى التي تقوم فيها بتشغيل الأمر.
AllSigned يمكنك تشغيل نصوص موقعة من مطور موثوق. مع تطبيق هذا الإعداد ، قبل التنفيذ ، سيطلب منك البرنامج النصي تأكيد رغبتك في تشغيله.
RemoteSigned يمكنك تشغيل البرامج النصية الخاصة بك أو البرامج النصية الموقعة من قبل مطور موثوق.
Unrestricted يمكنك تشغيل أي برنامج نصي تريده.
Default تقوم نفس عمل Restricted
Bypass تقوم نفس عمل Unrestricted أي كأنه لا توجد هناك أي سياسة .

ال Cmdlet ووضائف ال powershell

تأتي معظم وظائف PowerShell من Cmdlet والتي تكون دائمًا عن تنسيق فعل-اسم verb-noun ،مفصولين بشرطة، وليس بصيغة الجمع.

علاوة على ذلك ، فإنناتج تنفيذ Cmdlet تكون بارجاع كائنات objects و ليست نصًا.

على سبيل المثال لا الحصر ، تتضمن بعض الأفعال:

  • Get - للحصول على شيء
  • Set - لتحديد شيء ما
  • Start - لتشغيل شيء ما
  • Stop - لإيقاف شيء ما قيد التشغيل
  • Publish - يجعل المورد متاحًا للآخرين.
  • Mount - إرفاق كيان مسمى بموقع.

للإطلاع على قائمة الأفعال الممكنة من هنا.

أوامر ال Powershell

للحصول على المساعدة حول أمر معين ، يكفي كتابة Get-command متبوع بالكلمة المراد البحث عنها، مثلا لمعرفة كيفية إعادة تعينن اسم للجهاز، نكتب:


Get-help rename-computer
        

للحصول على قائمة جميع الأوامر الممكنة باسم كائن معين، مثلا كمبيوتر:


Get-Command *computer*

لمعرفة حالة معينة لكائن محدد، نسبق الكائن بفعل get . مثلا لمعرفة عنوان ال IP :

 Get-NetIpConfiguration
        

المتغيرات

أي cmdlet لديها العديد من المتغيرات التي تحدد كيفية تنفيذ الأمر.فبرنامج Powershell ISE يقدم قائمة المتغيرات الممكنة في أمر معين بعد كتابة شرطة – مثلا :

powershell ISE auto complete

يمكننا مثلا معرفة حالة الجدار لناري عن طريق:


Get-NetFirewallProfile

يمكن تغيير الحالة الى ايقاف (لا ينصح بذلك في الواقع العملي) عن طريق ال cmdlet التالي:


Set-NetFirewallProfile -Profile domain,public,private -Enabled False

يمكن اعادة تشغيل الحدار الناري مجددا :


Set-NetFirewallProfile -Profile domain,public,private -Enabled True

الاستعارات Aliases

بعض الأوامر تملك استعارات ، أي أوامر مصغرة عن الأمر الأصلي.مثلا لتشغيل الآلة الحاسبة، الأمرين التاليين يؤديان نفس الدور:


Start-Process Calculator
start Calculator

نفس الشيء ، لإيقاف البرنامج السابق (الآلة الحاسبة)، كلا الأمرين يؤديان الغرض:


Stop-Process -name Calculator
spps -name Calculator

لمشاهدة جميع الأسماء المستعارة ، قم بتنفيذ

Get-Alias
        

التعليقات

ترك التعليقات في نص سيساعدك أنت وزملاؤك على فهم ما يفعله النص بشكل أفضل.التعليق المؤلف عن سطر واحد يبدأ بعلامة (#) ،أما تلك المكونة من عدة أسطر فتبدأ وتنتهي بعلامات الأرقام وأقواس الزاوية وتنتشر عبر عدة أسطر.


# view all available features      (one line comment)
Get-WindowsFeature
<#
    (multi line comments)
    we will create multiple dsc configuration
    one for each machines set
    verify at end
#>
Configuration IISConfig {
.....

الإمدادات Pipes

يقوم مبدأ الإمداد على تمرير البيانات من cmdlet إلى آخر.

على سبيل المثال ، إذا قمت بتنفيذ النص البرمجي التالي ، فستحصل على جميع الخدمات مرتبة حسب حالتها:


Get-Service | Sort-Object -property Status

يمكن استعمال الإمداد لأكثر من مرة، مثلا لعرض البرامج المشتغلة فقط، وعرض الأسماء، ثم ارسال المخرجات الى ملف :


Get-Service | WHERE {$_.status -eq "Running"} | SELECT displayname | Out-File running_services.csv

لعرض محتوى الملف :


cat .\running_services.csv

ملخص

في هذا المنشور تعرفنا على كيفية تشغيل PowerShell ، وكيفية تغيير سياسة التنفيذ ، وما هي ال cmdlet ، وكيفية تمرير البيانات باستخدام الإمداد وكيفية الحصول على خصائص الكائن. ضع في اعتبارك أنه إذا نسيت شيئًا ما ، فيمكنك دائمًا استخدام Get-Help cmdlet.

مصطلحات ذكرت في المقال:

العربية ُEnglish Français
سطر الأوامر Command Line ligne de commande
لغة برمجة نصية scripting language langage de script
بيئة البرمجة النصية المتكاملة (ISE) Integrated Scripting Envirenement Environnement de script intégré
تمييز بناء الجملة syntax highlighting coloration syntaxique
التعبئة التلقائية Auto complete Saisie automatique
خاصية feature fonctionnalité
سياسة policy politique
الاسم المستعار alias alias
تعليق comment commentaire
انبوب – امتداد - Pipes tuyaux
كائن object objet
مقيد restricted limité
كائن object objet
موقعة signed signé
التحكم عن بعد remote à distance
خادم server serveur