استخدام Windows PowerShell لإدارة خادم عن بعد

مكتمل

يركز موظفو إدارة تكنولوجيا المعلومات في شركة Contoso بشكل متزايد على أداء المهام الإدارية عن بُعد من العنصر الذي يقومون بإدارته. أحد المجالات التي تحظى باهتمام خاص هي القدرة على الاستفادة من Windows PowerShell في إدارة البنية الأساسية لتكنولوجيا المعلومات عن بُعد في Contoso. حيث يمكنك استخدام اتصال Windows PowerShell عن بُعد لتحقيق ذلك.

متطلبات الاتصال عن بعد

يتطلب الاتصال عن بعد تفعيل Windows PowerShell على الحاسوب المحلي وWindows Remote Management على أي أجهزة حاسوب تريد الاتصال بها عن بعد. يجب أيضًا تفعيل اتصال Windows PowerShell عن بُعد.

إشعار

يكون الاتصال عن بُعد Windows PowerShell مفعلاً بشكل افتراضي في Windows Server، ولكن يتعين تفعيله على Windows 10.

لتفعيل Windows PowerShell عن بُعد، استخدم أحد الإجراءات التالية. في موجه أوامر غير مقيد (أو موجه (المسؤول) Windows PowerShell) شغِّل الأمر التالي:

Winrm quickconfig

وبدلاً من ذلك، لتفعيل الاتصال عن بُعد، يمكنك استخدام Windows PowerShell cmdlet التالي:

Enable-PSremoting -force

هام

تواصل Windows Remote Management عبر HTTP. ويستخدم Windows Remote Management واتصال Windows PowerShell عن بُعد منفذ TCP 5985، بشكل افتراضي للاتصالات غير المشفرة الواردة، وTCP 5986 للاتصالات المشفرة الواردة.

إشعار

يمكن للتطبيقات التي تستخدم Windows Remote Management — مثل Windows PowerShell — أن تطبق التشفير الخاص بها على البيانات التي يتم تمريرها إلى خدمة " Windows Remote Management".

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

للإدارة عن بعد، يجب أن يكون لدى المسؤولين التخويل للقيام بما يلي:

  • الاتصال بالحاسوب عن بعد
  • تشغيل Windows PowerShell
  • الوصول إلى مخازن البيانات والتسجيل على الحاسوب عن بعد

تنبيه

يؤدي تفعيل الاتصال عن بُعد على أجهزة الحاسوب التي تحتوي على بطاقة واجهة شبكة يتم تعيينها إلى ملف تعريف موقع الشبكة العامة إلى إنشاء خطأ. يمكنك استخدام Enable-PSremoting -force لتجاوز هذا التقييد، وفرض الاتصال عن بعد على جهاز باستخدام NIC عام.

تشغيل cmdlets لأجهزة الحاسوب عن بُعد

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

ويوفر الجدول التالي مزيدًا من المعلومات حول معلمة ComputerName.

الأمر الوصف
Get-Command –ParameterName ComputerName يبحث عن cmdlets التي تستخدم معلمة ComputerName.
Get-Help <cmdlet-name> -parameter ComputerName ويحدد ما إذا كانت معلمة ComputerName تتطلب اتصال Windows PowerShell عن بعد.

معالجة الأوامر عن بعد

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

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

إشعار

ويتم استخدام بروتوكول مصادقة Kerberos version 5 (V5) بشكل افتراضي لتنفيذ التخويل والمصادقة. ولذلك، يكون مجال AD DS مطلوبًا.

تلميح

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

تدعم cmdlets التالية الاتصال عن بُعد.

  • Invoke-Command
  • Enter-PSSession
  • Exit-PSSession
  • Disconnect-PSSession
  • Receive-PSSession
  • Connect-PSSession

تلميح

يمكنك إنشاء علامات تبويب عن بُعد باستخدام Windows PowerShell ISE. لتنفيذ هذه المهمة، استخدم خيار علامة التبويب New Remote PowerShell من القائمة File في Windows PowerShell ISE.

عند تنفيذ الاتصال عن بُعد، يمكنك الاتصال بالأجهزة عن بُعد باستخدام جلسة عمل مؤقتة، أو يمكنك إنشاء جلسة عمل مستمرة.

إنشاء جلسة عمل مؤقتة

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

إشعار

ولا تكون المتغيرات أو الدالات المعرفة داخل الأوامر متاحة بعد إغلاق الاتصال.

لإنشاء اتصال مؤقت، استخدم الأمر cmdlet ⁧Invoke-Command⁩مع معلمة –ComputerName لتحديد أجهزة الكمبيوتر عن بُعد. ثم استخدم المعلمة –ScriptBlock لتحديد الأمر. على سبيل المثال، يتم تشغيل Get-EventLog الأمر التالي على كمبيوتر SEA-DC1:

Invoke-Command –ComputerName SEA-DC1 –ScriptBlock {Get-EventLog –log system}

إنشاء جلسة عمل مستمرة

لإنشاء اتصال مستمر مع كمبيوتر آخر، استخدم New-PSSession cmdlet. على سبيل المثال، ينشئ الأمر التالي جلسة عمل على حاسوب عن بُعد، ويحفظ جلسة العمل في متغير $s:

$s = New-PSSession –ComputerName SEA-DC1

Enter-PSSession استخدم cmdlet للاتصال بجلسة عمل تفاعلية وبدء تشغيلها. على سبيل المثال، بعد فتح جلسة عمل جديدة على SEA-DC1، يبدأ الأمر التالي جلسة تفاعلية مع الحاسوب:

Enter-PSSession $s

وبمجرد دخول جلسة العمل، يقوم الأمر Windows PowerShell بطلب التغييرات على الحاسوب المحلي للإشارة إلى وجود الاتصال.

A screenshot of the Administrator: Windows PowerShell dialog box. The administrator has connected remotely to SEA-DC1.

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

Exit-PSSession

تشغيل الأوامر عن بُعد على أجهزة حاسوب متعددة

بالنسبة للجلسات المؤقتة، Invoke-Command يقبل cmdlet أسماء أجهزة كمبيوتر متعددة. بالنسبة للاتصالات المستمرة، تقبل معلمة جلسة العمل جلسات Windows PowerShell المتعددة. لتشغيل أمر عن بُعد على أجهزة كمبيوتر متعددة، قم بتضمين كافة أسماء أجهزة الكمبيوتر في معلمة ComputerName مع الأمر cmdlet Invoke-Command، ثم قم بفصل الأسماء بفواصل كما هو موضح في المثال التالي:

Invoke-Command -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2 -ScriptBlock {Get-Culture}

لجلسات العمل المستمرة، يمكنك أيضًا تشغيل أمر في جلسات متعددة لـ Windows PowerShell. تنشئ الأوامر التالية جلسات عمل Windows PowerShell على SEA-DC1 و SEA-SVR1 و SEA-SVR2، ثم قم بتشغيل Get-Culture أمر في كل جلسة عمل Windows PowerShell:

$s = New-PSSession -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2

Invoke-Command -Session $s -ScriptBlock {Get-Culture}

تلميح

لتضمين الكمبيوتر المحلي في قائمة أجهزة الكمبيوتر، أدخل اسم الكمبيوتر المحلي أو نقطة (.) أو localhost.

كيفية تشغيل برنامج نصي على أجهزة الحاسوب عن بعد

لتشغيل برنامج نصي محلي على أجهزة الكمبيوتر عن بعد، استخدم المعلمة ⁧⁧FilePath مع Invoke-Command. تشغيل الأمر التالي البرنامج النصي Sample.ps1 على أجهزة الحاسوب SEA-DC1 وSEA-SVR1:

Invoke-Command -ComputerName SEA-DC1, SEA-SVR1 –FilePath C:\Test\Sample.ps1

وترجع نتائج البرنامج النصي إلى الحاسوب المحلي. باستخدام المعلمة FilePath ، لا تحتاج إلى نسخ أي ملفات إلى أجهزة الكمبيوتر البعيدة.

التوضيح

يوضح الفيديو التالي كيفية إدارة Windows Server عن بُعد باستخدام Windows PowerShell. وتتمثل الخطوات الرئيسية في هذه العملية فيما يلي:

  1. بدء تشغيل موجه غير مقيد لـ PowerShell.

  2. أنشئ جلسة عمل عن بُعد لـ PowerShell عن طريق تشغيل الأمر التالي:

    Enter-PSSession -ComputerName SEA-DC1
    
  3. استرد معلومات حول الخادم، مثل الاسم وعنوان بروتوكول الانترنت، باستخدام cmdlets القياسية لـ Windows PowerShell.

  4. تحقق من حالة خدمة IIS ثم أعد تشغيل تلك الخدمة باستخدام الأمر التالي:

    Get-Service -Name IISAdmin | Restart-Service
    


مراجعة سريعة

1.

ما هو الأمر cmdlet الذي يمكن تشغيله على حاسوب Windows Server عن بُعد لتمكين PowerShell عن بعد؟