ما هو Windows PowerShell وماذا يأكل؟ الجزء 1: الميزات الرئيسية

تاريخيا ، تم تطوير الأدوات المساعدة لسطر الأوامر على أنظمة Unix بشكل أفضل من Windows ، ولكن مع ظهور حل جديد ، تغير الوضع.

يسمح Windows PowerShell لمسؤولي النظام بأتمتة معظم المهام الروتينية. بمساعدتها ، يمكنك تغيير الإعدادات وإيقاف الخدمات وبدءها ، بالإضافة إلى إجراء صيانة لمعظم التطبيقات المثبتة. سيكون من الخطأ تصور النافذة الزرقاء كمترجم أوامر آخر. لا يعكس هذا النهج جوهر الابتكارات التي اقترحتها مايكروسوفت. في الواقع ، إن إمكانيات Windows PowerShell أوسع بكثير: في سلسلة قصيرة من المقالات ، سنحاول معرفة كيف يختلف حل Microsoft عن الأدوات الأكثر شيوعًا.



دلائل الميزات 


بالطبع ، يعد Windows PowerShell في الأساس عبارة عن أمر أوامر مع لغة برمجة نصية ، تم إنشاؤها في الأصل على أساس .NET Framework ، وبعد ذلك على .NET Core. على عكس الأصداف التي تقبل وتعيد البيانات النصية ، يعمل Windows PowerShell مع فئات .NET التي لها خصائص وأساليب. يسمح لك PowerShell بتنفيذ الأوامر العادية ، كما يمنح الوصول إلى كائنات COM و WMI و ADSI. يستخدم مستودعات مختلفة ، مثل نظام الملفات أو تسجيل Windows ، للوصول إليها ما يسمى الموردين (مقدمي). تجدر الإشارة إلى القدرة على تضمين مكونات PowerShell القابلة للتنفيذ في تطبيقات أخرى لتنفيذ عمليات مختلفة ، بما في ذلك من خلال الواجهة الرسومية. والعكس صحيح أيضًا: توفر العديد من تطبيقات Windows إمكانية الوصول إلى واجهات الإدارة الخاصة بها من خلال PowerShell. 

يتيح لك Windows PowerShell:

  • تغيير إعدادات نظام التشغيل ؛
  • إدارة الخدمات والعمليات ؛
  • تكوين أدوار ومكونات الخادم ؛
  • تثبيت نظام التشغيل
  • إدارة البرامج المثبتة من خلال واجهات خاصة ؛
  • تضمين المكونات القابلة للتنفيذ في برامج الجهات الخارجية ؛
  • إنشاء برامج نصية لأتمتة المهام الإدارية ؛
  • العمل مع نظام الملفات ، سجل Windows ، مخزن الشهادات ، إلخ.

شل وبيئة التطوير


هناك Windows PowerShell بطريقتين: بالإضافة إلى محاكي وحدة التحكم مع غلاف الأوامر ، توجد بيئة برمجة نصية متكاملة (ISE). للوصول إلى واجهة سطر الأوامر ، ما عليك سوى تحديد الاختصار المناسب في قائمة Windows أو تشغيل powershell.exe من قائمة التشغيل. تظهر نافذة زرقاء على الشاشة ، تختلف اختلافًا كبيرًا في القدرات عن ملف cmd.exe antediluvian. هناك إكمال تلقائي وميزات أخرى مألوفة لمستخدمي أوامر الأوامر لأنظمة Unix.



للعمل مع الصدفة ، تحتاج إلى تذكر بعض تركيبات المفاتيح:

  • يمرر السهمان لأعلى ولأسفل خلال السجل لتكرار الأوامر المكتوبة مسبقًا ؛
  • السهم الأيمن في نهاية السطر يعيد تدوير الأمر السابق حرفًا تلو الآخر ؛
  • يقوم Ctrl + Home بحذف النص المكتوب من موضع المؤشر إلى بداية السطر ؛
  • يحذف Ctrl + End النص من المؤشر إلى نهاية السطر.

يعرض F7 نافذة تحتوي على الأوامر المكتوبة ويسمح لك بتحديد أحدها. يعمل اختيار الماوس ولصق ولصق ووضع المؤشر والحذف و Backspace أيضًا في وحدة التحكم - كل ما نريده.


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


كمدليتس 


في Windows PowerShell ، ما يسمى ب أوامر cmdlets هذه هي فئات .NET المتخصصة التي تحتوي على وظائف متنوعة. يتم تسميتها وفقًا لمبدأ "كائن العمل" (أو "فعل-نون ، إذا كنت ترغب في ذلك أكثر من ذلك) ، ويشبه الرابط الضام المفصول بين الواصلة المسند والموضوع في جمل اللغات الطبيعية. على سبيل المثال ، Get-Help تعني حرفياً "Get-Help" أو في سياق PowerShell: "Show-Help". في الواقع ، هذا أمر تماثلي للأمر man في أنظمة Unix ويجب طلب الكتيبات الموجودة في PowerShell بهذه الطريقة ، وليس عن طريق استدعاء أوامر cmdlets باستخدام مفتاح --help أو /.

بالإضافة إلى Get ، يتم استخدام أفعال أخرى (وليس الأفعال فقط ، بشكل دقيق) في أوامر cmdlets للإشارة إلى الإجراءات. في القائمة أدناه نقدم بعض الأمثلة:

Add- إضافة ؛
Clear- نظيف ؛
Enable- ممكن؛
Disable- اطفيء؛
New- خلق؛
Remove- حذف؛
Set- يطلب؛
Start- يركض؛
Stop- قف؛
Export- التصدير ؛
Import- الاستيراد.

توجد أوامر cmdlets للنظام والمستخدم والاختيارية: نتيجة التنفيذ ، تقوم جميعها بإرجاع كائن أو مجموعة من الكائنات. فهي ليست حساسة لحالة الأحرف ، أي من وجهة نظر مترجم الأوامر ، لا يوجد فرق بين Get-Help و get-help. يتم استخدام الحرف "؛" للفصل ، ولكن من الضروري تعيينه فقط في حالة تنفيذ عدة أوامر cmdlets على نفس السطر. 

يتم تجميع أوامر cmdlets لـ Windows PowerShell في وحدات (NetTCPIP و Hyper-V وما إلى ذلك) ، ويوجد أمر cmdlet Get-Command للبحث حسب الكائن والإجراء. يمكنك إظهار المساعدة على النحو التالي:

Get-Help Get-Command



يعرض الأمر افتراضيًا تعليمات موجزة ، ولكن إذا لزم الأمر ، يتم تمرير المعلمات (الوسائط) إلى أوامر cmdlets. باستخدامها ، على سبيل المثال ، يمكنك الحصول على مساعدة تفصيلية (معلمة مفصلة) أو مساعدة كاملة (معلمة كاملة) ، بالإضافة إلى عرض أمثلة (معلمة أمثلة):

Get-Help Get-Command -Examples

يتم تحديث التعليمات في Windows PowerShell مع الأمر cmdlet Update-Help. إذا كان سطر الأوامر طويلًا جدًا ، فيمكن نقل وسيطات الأمر cmdlet إلى التالي عن طريق كتابة حرف الخدمة "" والضغط على Enter - ما عليك سوى إنهاء كتابة الأمر في سطر واحد والمتابعة في سطر آخر.

فيما يلي بعض الأمثلة على أوامر cmdlets الشائعة: 

Get-Process- عرض العمليات الجارية في النظام ؛
Get-Service- عرض الخدمات وحالتها ؛
Get-Content- عرض محتويات الملف.

بالنسبة إلى أوامر cmdlets والمرافق الخارجية المستخدمة بشكل متكرر في Windows PowerShell ، هناك مرادفات قصيرة - أسماء مستعارة (من الاسم المستعار باللغة الإنجليزية). على سبيل المثال ، dir هو اسم مستعار لـ Get-ChildItem. تحتوي قائمة المرادفات على نظائر أوامر من أنظمة Unix (ls ، ps ، إلخ) ، ويتم استدعاء أمر cmdlet Get-Help بواسطة الأمر help. يمكن الاطلاع على قائمة كاملة من المرادفات باستخدام Get-Alias ​​cmdlet:


برامج PowerShell النصية والوظائف والوحدات واللغة


يتم تخزين البرامج النصية لـ Windows PowerShell كملفات نصية عادية بملحق .ps1. لا يمكنك إطلاقها بنقرة مزدوجة: تحتاج إلى النقر بزر الماوس الأيمن على قائمة السياق وتحديد عنصر "تشغيل في PowerShell". من وحدة التحكم ، سيكون عليك إما تحديد المسار الكامل للبرنامج النصي ، أو الانتقال إلى الدليل المناسب وكتابة اسم الملف. يقتصر تشغيل البرامج النصية أيضًا على سياسة النظام ، وللتحقق من الإعدادات الحالية ، يمكنك استخدام Get-ExecutionPolicy cmdlet ، والذي سيعطي إحدى القيم التالية:

Restricted- تنفيذ البرنامج النصي محظور (افتراضيًا) ؛
AllSigned- يسمح فقط بإطلاق البرامج النصية الموقعة من قبل مطور موثوق ؛
RemoteSigned- يسمح بتشغيل البرامج النصية الموقعة والمخصصة ؛
Unrestricted- يسمح بتشغيل أي نصوص.

المسؤول لديه خياران. الأكثر أمانًا ينطوي على توقيع البرامج النصية ، لكن هذه شعوذة خطيرة جدًا - سنتعامل معها في المقالات التالية. الآن سنتبع مسار الأقل مقاومة ونغير السياسة:

Set-ExecutionPolicy RemoteSigned


للقيام بذلك ، يجب تشغيل PowerShell كمسؤول ، على الرغم من أنه باستخدام معلمة خاصة ، يمكنك تغيير السياسة للمستخدم الحالي.

تتم كتابة البرامج النصية بلغة برمجة موجهة للكائنات ، والتي يتم تسمية أوامرها وفقًا لنفس المبدأ مثل أوامر cmdlets التي تمت مناقشتها سابقًا: "Action-Object" ("Verb-Noun"). الغرض الرئيسي منه هو أتمتة المهام الإدارية ، لكنها لغة مفسرة كاملة لديها جميع التركيبات اللازمة: التفرع الشرطي ، الحلقات ، المتغيرات ، المصفوفات ، الكائنات ، معالجة الأخطاء ، إلخ. أي محرر نصوص مناسب لكتابة البرامج النصية ، ولكن من الأنسب بدء تشغيل Windows PowerShell ISE.

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

Get-ChildItem Env:\PSModulePath | Format-Table -AutoSize

الناقلون


في المثال الأخير ، استخدمنا تصميمًا مألوفًا لمستخدمي الأصداف لأنظمة Unix. في Windows PowerShell ، يسمح لك الشريط الرأسي أيضًا بنقل إخراج أحد الأوامر إلى إدخال أمر آخر ، ولكن هناك فرق كبير في تنفيذ خط الأنابيب: هذا لا يتعلق بمجموعة أحرف أو بعض النصوص. تقوم أوامر cmdlets المضمنة أو الدالات المعرفة من قبل المستخدم بإرجاع كائنات أو صفائف من الكائنات ، ويمكن أيضًا استقبالها عند الإدخال. مثل قشرة Bourne والعديد من متابعيها ، يبسط PowerShell المهام المعقدة بخط أنابيب.

يبدو أبسط مثال على خط الأنابيب كما يلي:

Get-Service | Sort-Object -property Status


أولاً ، يتم تشغيل الأمر cmdlet Get-Service ، ثم يتم تمرير جميع الخدمات التي يتلقاها إلى الأمر cmdlet لـ Object-Sort للفرز حسب خاصية الحالة. أي حجة تم تمريرها نتيجة القسم السابق من خط الأنابيب تعتمد على نوعه - عادة ما يكون هذا هو InputObject. ستتم مناقشة هذه المشكلة بمزيد من التفصيل في المقالة المخصصة للغة برمجة PowerShell. 

إذا كنت ترغب في ذلك ، يمكنك متابعة السلسلة وتمرير نتيجة Sort-Object إلى cmdlet أخرى (سيتم تنفيذها من اليسار إلى اليمين). بالمناسبة ، تصميم Windows المألوف لمخرجات الترحيل متاح أيضًا لجميع Unixoids: 

Get-Service | Sort-Object -property Status | more

تشغيل المهام في الخلفية 


في كثير من الأحيان ، تحتاج إلى تشغيل أمر معين في الخلفية حتى لا تنتظر نتيجة تنفيذه في جلسة shell. في Windows PowerShell ، توجد عدة أوامر cmdlets لهذه الحالة:

Start-Job- بدء مهمة خلفية ؛
Stop-Job- إيقاف مهمة الخلفية ؛
Get-Job- عرض قائمة مهام الخلفية.
Receive-Job- عرض نتيجة مهمة الخلفية ؛
Remove-Job- إزالة مهمة الخلفية ؛
Wait-Job- انقل مهمة الخلفية مرة أخرى إلى وحدة التحكم.

لبدء مهمة خلفية ، نستخدم الأمر cmdlet Start-Job ونشير إلى الأقواس المتعرجة إلى أمر أو مجموعة من الأوامر:

Start-Job {Get-Service}


يمكن التلاعب بمهام الخلفية في Windows PowerShell من خلال معرفة أسمائها. أولاً ، تعرف على كيفية عرضها:

Get-Job


نعرض الآن نتيجة Job1:

Receive-Job Job1 | more


إنه بسيط للغاية.

تنفيذ الأمر عن بعد


يسمح لك Windows PowerShell بتنفيذ الأوامر والبرامج النصية ليس فقط على المستوى المحلي ، ولكن أيضًا على الكمبيوتر البعيد ، وحتى على مجموعة كاملة من الأجهزة. هناك عدة طرق للقيام بذلك:

  • تحتوي العديد من أوامر cmdlets على معلمة -ComputerName، ولكن هذه الطريقة ستفشل ، على سبيل المثال ، في إنشاء خط أنابيب ؛
  • Enter-PSSessionيسمح لك الأمر cmdlet بإنشاء جلسة تفاعلية على جهاز بعيد ؛ 
  • باستخدام الأمر cmdlet ، Invoke-Commandيمكنك تنفيذ الأوامر أو البرامج النصية على واحد أو أكثر من أجهزة الكمبيوتر البعيدة.

إصدارات PowerShell


منذ إصداره الأول في عام 2006 ، تغير PowerShell كثيرًا. تتوفر الأداة للعديد من الأنظمة التي تعمل على أنظمة أساسية مختلفة للأجهزة (x86 و x86-64 و Itanium و ARM): Windows XP و Windows Server 2003 و Windows Vista و Windows Server 2008/2008 R2 و Windows 7 و Windows 8 و Windows 8.1 و Windows RT و Windows RT 8.1 و Windows Server 2012/2012 R2 و Windows 10 و Windows Server 2016 و GNU / Linux و OS X. تم إصدار الإصدار الأحدث 6.2 في 10 يناير 2018. من المرجح أن تعمل البرامج النصية المكتوبة للإصدارات السابقة في الإصدارات الأحدث ، ولكن قد تكون هناك مشاكل في النقل العكسي ، لأنه على مدار سنوات التطوير ، ظهر عدد كبير من أوامر cmdlets الجديدة في PowerShell. يمكنك معرفة إصدار shell المثبت على الكمبيوتر باستخدام خاصية PSVersion للمتغير المدمج $ PSVersionTable:

$PSVersionTable.PSVersion


يمكنك أيضًا استخدام الأمر cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly


يتم نفس الشيء مع الأمر cmdlet Get-Host. في الواقع ، هناك العديد من الخيارات ، ولكن لاستخدامها تحتاج إلى تعلم لغة برمجة PowerShell ، وهو ما سنفعله في المقالة التالية

ملخص 


تمكنت Microsoft من إنشاء غلاف أوامر قوي حقًا مع بيئة متكاملة ملائمة لتطوير البرامج النصية. وهو يختلف عن الوسائل المألوفة لنا في عالم Unix من خلال التكامل العميق مع أنظمة تشغيل Windows ، وكذلك البرامج الخاصة بهم ومنصة .NET Core. يمكن تسمية PowerShell بالصدفة الموجهة للكائنات لأن أوامر cmdlets والوظائف المعرفة من قبل المستخدم تقوم بإرجاع كائنات أو صفائف من الكائنات ويمكن استقبالها عند الإدخال. نعتقد أنه يجب على جميع مسؤولي خادم Windows امتلاك هذه الأداة: لقد مر الوقت الذي يمكنهم فيه الاستغناء عن سطر الأوامر. هناك حاجة إلى غلاف وحدة تحكم متقدم بشكل خاص على VPS منخفض التكلفة الذي يعمل بنظام Windows Server Core ، ولكن هذه قصة أخرى.

2: Windows PowerShell
3: ,
4: ,

Source: https://habr.com/ru/post/undefined/


All Articles