حتى على نظام Windows ، يتم تمكين PSRemoting افتراضيًا ، لكنه ليس مفعلاً طوال الوقت. إذا كنت بحاجة إلى اختبار ما إذا كان PSRemoting مفعلاً أو تمكين PSRemoting على نظام Windows ، فإن هذا البرنامج التعليمي مناسب لك.
سيقوم هذا البرنامج التعليمي بإرشادك خلال العديد من الطرق المختلفة لتمكين PSRemoting على الأجهزة المحلية وعن بُعد التي تعمل بنظام Windows.
لنبدأ!
تمكين PSRemoting يقوم بالكثير
إذا كنت تتعلم للمرة الأولى حول PowerShell Remoting ، قد تعتقد أن التمكين يتم بأمر واحد فقط. ربما رأيت بعض الإشارات إلى أمر PowerShell Enable-PSRemoting
وتعتقد أنه بمجرد تشغيل هذا الأمر ، يتغير شيء ما. ستكون مخطئًا.
عندما تسمع عن تمكين PSRemoting ، يجب أن تحدث العديد من المهام في الخلفية لجعل ذلك يحدث. نظرًا لأن PowerShell Remoting يعتمد على أنظمة أخرى للتشغيل بشكل صحيح ، فإن لديه بعض التبعيات.
على سبيل المثال ، عند تشغيل cmdlet Enable-PSRemoting
بدون معلمات على نظام Windows ، يقوم بأداء جميع المهام التالية:
- يتم بدء خدمة WinRM وتعيينها للبدء التلقائي.
- إنشاء استماع على منافذ WinRM الافتراضية 5985 لحركة المرور HTTP.
- تمكين استثناءات جدار الحماية ل WS-Management.
- تسجيل تكوينات جلسة PowerShell مع WS-Management.
- تمكين تكوينات جلسة PowerShell.
- يقوم بتعيين جلسات PowerShell البعيدة للسماح بالوصول عن بُعد.
- إعادة تشغيل خادم WinRM لتطبيق جميع التغييرات.
أليس من الجيد أنك لست مضطرًا للقيام بكل ذلك يدويًا؟ لماذا ذكرت هذا إذا كانت الأمر Enable-PSRemoting
تقوم به كله؟ لأنه سيكون هناك أوقات عندما لا يعمل شيء وتحتاج إلى تتبع ما يحدث.
إعدادات PSRemoting الافتراضية على Windows
منذ أن تم إطلاق PSRemoting في نظام Windows ، يأتي مفعلًا افتراضيًا ولكن ليس بشكل عالمي وأيضًا ليس لجميع إصدارات نظام التشغيل Windows.
على جميع أنظمة التشغيل العميل في Windows ، يكون PSRemoting دائمًا معطلاً.
على خادم Windows ، يتم تمكين PSRemoting في بعض الأحيان وليس دائمًا اعتمادًا على نوع ملف الشبكة الذي يعمل تحته Windows. فيما يلي جدول مفيد يساعدك في تحديد ما إذا كان نظام التشغيل Windows الخاص بك لديه PSRemoting ممكن أم لا.
Operating System | Network Profile | PSRemoting |
Windows Server 2008 R2 | Domain/Private | Disabled |
Windows Server 2008 R2 | Public | Disabled |
Windows Server 2012 & Newer | Domain/Private | Enabled |
Windows Server 2012 & Newer | Public | Enabled within the same subnet |
على الجانب الآخر ، Linux سهل. PSRemoting ليست حتى شيء! حتى PowerShell ليس مثبتًا افتراضيًا. إذا كنت ترغب في تشغيل PSRemoting على Linux ، فعليك إعداده.
كفى حديثًا ، دعونا نريك كيفية بدء استخدام PSRemoting فعليًا!
الشروط المسبقة
إذا كنت تنوي متابعة الأمثلة في هذا القسم ، يرجى التأكد من أن لديك ما يلي:
- A Windows Server 2008 R2 or later machine
- A local or Active Directory domain user in the local administrators group
تمكين PSRemoting محليًا
واحدة من أسهل الطرق لتمكين PSRemoting هي استخدام الأمر المدمج Enable-PSRemoting
. هذا الأمر، كما تعلمت سابقًا، هو اختصار لتكوين العديد من الخدمات المختلفة لاستيعاب التحكم عن بُعد باستخدام PowerShell.
استخدام Cmdlet Enable-PSRemoting
عند تشغيل هذا الأمر دون تحديد أي معلمات، سيتخذ إجراءات مختلفة تبعًا لنظام التشغيل الذي تعمل عليه. على أي نظام Windows حالي، تحدث نفس الخطوات الأساسية. يتم تمكين PSRemoting، ويتم إنشاء مستمع WinRM HTTP، وتمكين قواعد جدار الحماية. الفارق الرئيسي هو الطريقة التي يتم بها التعامل مع شبكات الجمهور.
في نظام التشغيل خادم مثل Windows Server 2019، تتيح قاعدة جدار الحماية لشبكات الجمهور اتصالات بعيدة من أجهزة أخرى على نفس الشبكة. في نظام عميل مثل Windows 10، ستتلقى خطأ يفيد أنك في شبكة عامة.
إذا كنت غير متأكد من ملف تعريف الشبكة الذي يعمل تحته Windows، قم بتشغيل الأمر التالي:
يجب أن تستخدم PSRemoting فقط على شبكة موثوقة، حيث أنها في الأساس تقوم بتشغيل خادم ويب للاستماع إلى الاتصالات البعيدة.

إذا كنت تتفق مع تشغيل PSRemoting على ملف تعريف شبكة غير خاص أو نطاق، يمكنك تجاوز فحص ملف تعريف الشبكة باستخدام معلمة SkipNetworkProfileCheck
. باستخدام هذه المعلمة، ستفتح منافذ WinRM على جدار الحماية الخاص بنظام Windows.
سيفتح استخدام معلمة
SkipNetworkProfileCheck
جدار الحماية الخاص بنظام Windows لاستضافة PowerShell remoting على ملف تعريف الشبكة الحالي ولكن سيسمح فقط بالاتصالات البعيدة من الأجهزة على نفس الشبكة الفرعية.
اثنان من المعلمات التي يمكن استخدامها مع Enable-PSRemoting
تعملان معًا. هما المعلمتان -Force
و -Confirm
. يمكنك استخدام -Force
لتجاوز جميع الرسائل التي قد يعطيك إياها الأمر Enable-PSRemoting
عادةً. يمكنك أيضًا استخدام -Confirm:$false
للحصول على نفس النتيجة.
استخدام أمر winrm quickconfig
كان أمر winrm quickconfig
طريقة شائعة لإعداد PSRemoting قبل إنشاء الأمر Enable-PSRemoting
، لكن لا يزال له مكانه. إذا قمت فقط بتشغيل winrm quickconfig
، فسيتم تمكين خدمة WinRM، وإنشاء مستمع HTTP، وتمكين قواعد جدار الحماية. هذه كلها أشياء يتم فعلها بالفعل بواسطة Enable-PSRemoting
ولكن هذا لا يعد ضبط الجهاز للتعامل مع جلسات PowerShell عن بُعد.
حيث تأتي أوامر winrm
بفائدة في ضبط المستمعين HTTPS. بينما يمكنك القيام بذلك يدويًا، إذا كان لديك شهادة مناسبة للمستمع HTTPS يمكنك ببساطة تشغيل winrm quickconfig -transport:https
وسيتم تكوين المستمع HTTPS وقواعد جدار الحماية HTTPS.
تمكين PSRemoting عن بُعد
حتى الآن، تعلمت أنه يمكنك تمكين PSRemoting عن طريق تشغيل أمر على جهاز كمبيوتر محلي. هذا يقودنا إلى سيناريو الدجاجة والبيضة. يتيح لك PSremoting تشغيل الأوامر على أجهزة الكمبيوتر عن بُعد ولكن كيف يمكنك تشغيل أمر عن بُعد بدون PSRemoting؟
ثلاث طرق؛ أداة PSexec، WMI و Group Policy.
استخدام Psexec
PSExec هو أداة مفيدة تتيح لك تشغيل الأوامر عن بُعد مثلما يفعل PSRemoting. ومع ذلك، يستخدم PSexec طريقة اتصال مختلفة يمكنك استغلالها!
مع PSexec، يمكنك تشغيل Enable-PSRemoting
من جهاز الكمبيوتر المحلي باستخدام الأمر التالي. الأمر أدناه يقوم باستدعاء psexec والاتصال بالخادم ServerB. ثم يبدأ عملية PowerShell وينفذ أمر Enable-PSRemoting
بمفتاح -Force
لتجاوز الرسائل النمطية.
هذا الخيار جيد للحالات الفردية حيث تحتاج إلى تمكين PSRemoting على نظام بعيد، ولكنه ليس جيدًا لتمكين PSRemoting على العديد من الأنظمة ويتطلب تنزيل psexec.
استخدام WMI
في بعض الأحيان قد لا يعمل PSexec. العديد من برامج الأمان تحجب psexec ولكن لا داعي للقلق، لديك أيضًا WMI!
باستخدام PowerShell و cmdlet Invoke-CimMethod
. باستخدام cmdlet Invoke-CimMethod
، يمكنك توجيه PowerShell للاتصال بجهاز الكمبيوتر عن بُعد عبر DCOM واستدعاء الأساليب.
لحظة حظا سعيدا لك، WMI لديه فئات Win32_Process
التي تتيح لك استدعاء العمليات. من خلال استدعاء الطريقة Create
ضد Win32_Process
، يقوم Invoke-CimMethod
بالاتصال بجهاز الكمبيوتر عن بُعد، واستدعاء PowerShell وتشغيل Enable-PSRemoting
كما هو موضح أدناه.
المثال أدناه يقوم بإنشاء جدول تجزئة لاتصال الجلسة حيث يتم تحديد اسم الخادم وبيانات الاعتماد والبروتوكول. ثم في جدول التجزئة التالي، يتم ضبط المعلمات لـ Invoke-CimMethod
. بمجرد تشغيل هذه، يتم إنشاء جلسة CIM عبر بروتوكول DCOM الذي يبدأ عملية PowerShell ثم يقوم بتشغيل أمر Enable-PSRemoting
.
في حالة استخدامك لهذا في بيئة النطاق، ويحق للمستخدم الذي يقوم بتنفيذ الأوامر أن يمتلك حقوق إدارية على الخادم الوجهة، يمكن استبعاد السطر
Credential = Get-Credential
.
استخدام سياسة المجموعة
الخيار الأخير، والذي يُعتبر بالقول الجيد أنه الأفضل لتمكين WinRM عبر مجموعة واسعة من الحواسيب هو من خلال سياسة المجموعة. عند استخدام سياسة المجموعة، يمكنك إنشاء كائن سياسة مجموعة واحد وتطبيق تلك السياسة عبر آلاف الحواسيب في وقت واحد.
يجب أن تكون جميع الحواسيب في مجال Active Directory لاستخدام سياسة المجموعة.
لتمكين WinRM عبر العديد من الحواسيب في وقت واحد باستخدام سياسة المجموعة، ستحتاج إلى ضبط ثلاث عناصر تكوين مختلفة:
- تمكين خدمة WinRM.
- فتح منفذ جدار الحماية في Windows لـ WinRm.
- إنشاء مستمع WinRM والسماح بالاتصالات به.
أولاً، قم بتسجيل الدخول عن بعد (RDP) إلى مركز تحكم النطاق أو، بشكل أفضل، قم بتثبيت أدوات مسؤول الخادم عن بُعد (RSAT) على جهاز عمل مُنضم إلى النطاق. يجب أن يكون لديك الآن وحدة تحكم إدارة سياسة المجموعة (GPMC) متاحة.
تمكين خدمة WinRM
لتمكين خدمة WinRM على جميع أجهزة الوجهة:
- افتح GPMC وأنشئ سياسة مجموعة (GPO). أثناء التحرير في السياسة الجديدة، انتقل إلى تكوين الكمبيوتر —> إعدادات Windows —> إعدادات الأمان —> خدمات النظام
- حدد إدارة البعيد لنظام التشغيل Windows (WS-Management).
- في لوحة التكوين، حدد المربع لـ تعيين هذا الإعداد للسياسة.
- حدد زر الراديو لـ تلقائي لتعيين خدمة WinRm للبدء تلقائيًا عند التمهيد.
- انقر على موافق لتأكيد الإعداد.
فتح منفذ جدار الحماية في Windows
بعد ذلك، تحتاج إلى فتح منفذ WinRM على جميع أجهزة الوجهة. أثناء التحرير في السياسة التي تم إنشاؤها أعلاه:
- انتقل إلى تكوين الكمبيوتر —> إعدادات Windows —> إعدادات الأمان —> جدار الحماية في Windows Defender مع أمان متقدم.
٢. انقر على قاعدة الوصول الواردة الجديدة لإنشاء قاعدة وصول واردة جديدة.
٣. في الصفحة الأولى، حدد معرف مسبقًا واختر إدارة النوافذ عن بُعد لنظام التشغيل Windows كما هو موضح أدناه.

٤. في الصفحة التالية، حدد مربع الاختيار لقاعدة الشبكة النطاق/الخاص ما لم تكن تعرف أن الشبكات العامة تُستخدم في بيئاتك وستحتاج إلى السماح بالاتصالات البعيدة منها.

٥. في الصفحة التالية، اترك الإعداد الافتراضي لـ السماح بالاتصال وانقر فوق إنهاء لإنشاء القاعدة.
قم بإنشاء مستمع WinRM وقائمة تصفية
العنصر النهائي في التكوين لإضافته إلى سياسة المجموعة الخاصة بك هو إنشاء مستمع WinRM والسماح بالاتصالات إلى هذا المستمع WinRM. ينشئ هذا الإعداد مستمع WinRM لبروتوكول HTTP ويسمح بالاتصالات به من عناوين IP المحددة أو نطاقات IP.
أثناء استمرارك في تحرير سياسة المجموعة الخاصة بـ WinRM:
- انتقل إلى تكوين الكمبيوتر —> قوالب الإدارة —> مكونات Windows —> إدارة النوافذ عن بُعد لنظام التشغيل Windows (WinRM) —> خدمة WinRM.
٢. حدد تمكين للإعداد السماح بإدارة الخدمة عن بعد عبر WinRM.
٣. تحت الإعداد السماح بإدارة خادم بعيد عبر WinRM، قدم علامة نجمية (*
) لكل من مرشح IPv4 و مرشح IPv6 كما هو موضح أدناه.
لاحظ أنه يمكنك تحديد عدة مضيفين مفصولين بفاصلة في كل قائمة تصفية إذا كنت تعلم مسبقًا أي المضيفين سيتصلون بجميع أجهزة الوجهة.

4. انقر فوق موافق لتأكيد إعداد أحدث إعدادات GPO.
تطبيق GPO
في هذا الوقت، يجب أن يتم إنشاء GPO وأن يكون جاهزًا للاستخدام. المهمة النهائية التي يجب عليك القيام بها الآن هي تطبيق هذا GPO على جميع أجهزة الوجهة التي ترغب في تمكين WinRM عليها. لن تتعلم كيفية تعيين GPO لأجهزة الوجهة في هذا البرنامج التعليمي.
إذا لم تكن تعرف كيفية تعيين GPO لمجموعة من الأجهزة في Active Directory، يجب أن تتحقق من هذا المقال..
الخطوات التالية
في هذا البرنامج التعليمي، تعلمت كيفية تمكين PSRemoting بطرق متعددة. كيفية تمكين PSRemoting ستعتمد بشكل كبير على بيئتك وآمل أنني قد غطيت سيناريوك هنا.
الآن انطلق بما تعلمته، وابدأ في استخدام PSRemoting في بيئتك!