- يستخدم الاتصال عن بعد WinRM/WS-Man (HTTP/HTTPS) ويسمح بجلسات 1 إلى 1، و1 إلى العديد، والجلسات المستمرة مع عناصر التحكم في الأمان.
- يتيح لك أمر Enable-PSRemoting تكوين الخدمة والمستمعين وجدار الحماية؛ ويتطلب HTTPS شهادة صالحة ومطابقة CN/SAN.
- يتم إرجاع النتائج بدون تسلسل؛ ويتم استدعاء الأساليب داخل كتلة البرنامج النصي البعيد ويتم استخدام نقاط النهاية المخصصة للتفويض الدقيق.
ربما تقوم بالفعل بأتمتة العديد من المهام باستخدام PowerShell محليًا، ولكن أين يمكنك القيام بذلك حقًا؟ يُحدث PowerShell Remoting الفارق يحدث ذلك عند تشغيل أوامر على أجهزة بعيدة، سواءً كانت قليلة أو مئات، بشكل تفاعلي أو بالتوازي. هذه التقنية، المتوفرة منذ Windows PowerShell 2.0 والمُحسّنة منذ 3.0، تعتمد على WS-Management (WinRM) وتُحوّل بوويرشيل في قناة إدارة عن بعد قوية وقابلة للتطوير وآمنة.
أولاً وقبل كل شيء، من المهم فهم فكرتين رئيسيتين: أدوات الأوامر مع -معلمة اسم الكمبيوتر (على سبيل المثال، Get-Process أو Get-Service) ليست المسار طويل الأمد الذي توصي به Microsoft، ولا يعمل PowerShell Remoting كـ "اختراق". في الواقع، يفرض المصادقة المتبادلة، يقوم بمراجعة السجلات ويحترم أذوناتك المعتادة، دون تخزين بيانات الاعتماد أو تشغيل أي شيء بطريقة سحرية بامتيازات فائقة.
ما هو PowerShell Remoting ولماذا نستخدمه؟
مع PowerShell عن بُعد علبة تنفيذ أي أمر تقريبًا عن بعد يمكنك تشغيلها في جلسة محلية، بدءًا من الاستعلام عن الخدمات وصولًا إلى نشر التكوينات، والقيام بذلك على مئات أجهزة الكمبيوتر في آنٍ واحد. بخلاف أوامر الأوامر التي تقبل اسم الكمبيوتر (يستخدم الكثير منها DCOM/RPC)، فإن الاتصال عن بُعد ينتقل عبر WS-Man (HTTP/HTTPS)، وهو أكثر ملاءمة لجدار الحماية، ويسمح بالتوازي وينقل العمل إلى المضيف البعيد، وليس العميل.
ويترجم هذا إلى ثلاث مزايا عملية: أداء أفضل في عمليات التنفيذ الضخمة، احتكاك أقل في الشبكات مع قواعد تقييدية ونموذج أمان متوافق مع Kerberos/HTTPS. علاوة على ذلك، من خلال عدم الاعتماد على كل وحدة أمر لتنفيذ أوامرها عن بُعد، إنه يعمل مع أي نص أو دور المتوفر في الوجهة.
بشكل افتراضي، تأتي خوادم Windows الحديثة مزودة بخاصية الاتصال عن بعد؛ في Windows 10/11 تقوم بتفعيله باستخدام أمر cmdlet واحد. نعم، يمكنك استخدام بيانات اعتماد بديلة، وجلسات ثابتة، ونقاط نهاية مخصصة، والمزيد.
ملاحظة: الاتصال عن بُعد لا يعني فتح كل شيء. افتراضيًا، فقط المسؤولين يمكنهم الاتصال، ويتم تنفيذ الإجراءات تحت هويتهم. إذا كنت بحاجة إلى تفويض دقيق، تتيح لك نقاط النهاية المخصصة عرض الأوامر الأساسية فقط.

كيف يعمل داخل: WinRM، WS-Man والمنافذ
يعمل PowerShell Remoting بنموذج عميل-خادم. يرسل العميل طلبات إدارة WS عبر HTTP (5985/TCP) أو HTTPS (5986/TCP)على الهدف، تستمع خدمة إدارة Windows عن بُعد (WinRM) وتحل نقطة النهاية (تكوين الجلسة) وتستضيف جلسة PowerShell في الخلفية (عملية wsmprovhost.exe). إرجاع النتائج المتسلسلة إلى العميل في XML عبر SOAP.
عند تفعيل الاتصال عن بُعد لأول مرة، يتم تكوين المستمعين، وفتح استثناء جدار الحماية المناسب، وإنشاء تكوينات الجلسة. من PowerShell 6+، تتواجد إصدارات متعددة معًا. تمكين PSRemoting يقوم بتسجيل نقاط النهاية بأسماء تعكس الإصدار (على سبيل المثال، PowerShell.7 وPowerShell.7.xy).
إذا سمحت فقط باستخدام HTTPS في بيئتك، فيمكنك إنشاء مستمع آمن بشهادة صادرة عن سلطة اعتماد موثوقة (مستحسن). كبديل، يُمكن استخدام TrustedHosts بشكل محدود وواعٍ للمخاطر، في سيناريوهات مجموعات العمل أو أجهزة الكمبيوتر غير التابعة للنطاق.
لاحظ أن Powershell Remoting يمكن أن يتعايش مع cmdlets مع -ComputerName، ولكن مايكروسوفت تدفع WS-Man كطريقة قياسية ومستقبلية للإدارة عن بعد.
تمكين الاتصال عن بُعد باستخدام PowerShell والمعلمات المفيدة
على نظام التشغيل Windows، ما عليك سوى فتح PowerShell كمسؤول وتشغيله تمكين PSRemotingيبدأ النظام تشغيل WinRM، ويُهيئ التشغيل التلقائي، ويُفعّل المُستمع، ويُنشئ قواعد جدار الحماية المناسبة. بالنسبة للعملاء الذين لديهم ملف تعريف شبكة عام، يمكنك السماح بذلك عمدًا باستخدام -تخطي التحقق من ملف تعريف الشبكة (ثم تعزيزها بقواعد محددة):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
يسمح بناء الجملة أيضًا بما يلي: -يتأكد y -ماذا إذا للتحكم في التغيير. تذكر: إنه متاح فقط على نظام التشغيل Windowsيجب عليك تشغيل وحدة التحكم المُحسّنة. تختلف القواعد المُنشأة بين إصداري الخادم والعميل، خاصةً على الشبكات العامة، حيث تقتصر افتراضيًا على الشبكة الفرعية المحلية ما لم تُوسّع نطاقها (على سبيل المثال، باستخدام Set-NetFirewallRule).
لإدراج تكوينات الجلسة المسجلة بالفعل والتأكد من أن كل شيء جاهز، استخدم تكوين جلسة Get-PSSessionإذا ظهرت نقاط النهاية PowerShell.x وWorkflow، فهذا يعني أن إطار العمل الخاص بالتواصل عن بعد قيد التشغيل.

أوضاع الاستخدام: 1 إلى 1، 1 إلى العديد، والجلسات المستمرة
عندما تحتاج إلى وحدة تحكم تفاعلية على جهاز كمبيوتر واحد، توجه إلى إدخال PSSessionستظهر رسالة المطالبة، وسيُنقل كل ما تُنفّذه إلى المُضيف البعيد. يمكنك إعادة استخدام بيانات الاعتماد باستخدام Get-Credential لتجنب إعادة إدخالها باستمرار:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
إذا كنت تبحث عن إرسال أوامر إلى عدة أجهزة كمبيوتر في وقت واحد، فإن الأداة هي استدعاء-القيادة باستخدام كتلة نصية. افتراضيًا، يُشغّل ما يصل إلى 32 اتصالاً متزامنًا (قابل للتعديل باستخدام -ThrottleLimit). تُعاد النتائج كـ الكائنات غير التسلسلية (بدون طرق "حية"):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
هل تحتاج إلى استدعاء طريقة مثل .Stop() أو .Start()؟ افعل ذلك. داخل كتلة البرنامج النصي في السياق البعيد، وليس في الكائن المحلي المُلغى تسلسله، وهذا كل شيء. إذا كان هناك أمر cmdlet مُكافئ (إيقاف الخدمة/بدء الخدمة)، فمن الأفضل عادةً استخدامه للتوضيح.
لتجنب تكلفة بدء وإنهاء الجلسات في كل مكالمة، قم بإنشاء جلسة PSS المستمرة وأعد استخدامه عبر استدعاءات متعددة. استخدم New-PSSession لإنشاء الاتصال، واستخدم Invoke-Command-Session لإعادة استخدام النفق. لا تنسَ إغلاقه باستخدام Remove-PSSession عند الانتهاء.
التسلسل والحدود والممارسات الجيدة
تفصيل مهم: عند السفر، تتسطح الأشياء وتصل كما هي. لقطات غير متسلسلةمع خصائص، ولكن بدون طرق. هذا مقصود ويوفر نطاقًا تردديًا، ولكنه يعني أنه لا يمكنك استخدام عناصر تُنفّذ منطقًا (مثل .Kill()) على النسخة المحلية. الحل واضح: استدعاء هذه الطرق. عن بعد وإذا كنت تحتاج فقط إلى حقول معينة، فقم بالتصفية باستخدام Select-Object لإرسال بيانات أقل.
في البرامج النصية، تجنب استخدام Enter-PSSession (المُخصص للاستخدام التفاعلي) واستخدم Invoke-Command مع كتل البرامج النصية. إذا كنت تتوقع استدعاءات متعددة أو تحتاج إلى الحفاظ على الحالة (المتغيرات، الوحدات النمطية المستوردة)، استخدام جلسات مستمرة وإذا كان ذلك ممكنًا، فقم بفصلها/إعادة توصيلها باستخدام Disconnect-PSSession/Connect-PSSession في PowerShell 3.0+.
المصادقة، وHTTPS، وسيناريوهات خارج النطاق
في المجال، المصادقة الأصلية هي كيربيروس وكل شيء يسير على ما يرام. عندما لا يتمكن الجهاز من التحقق من اسم الخادم، أو تتصل بعنوان IP CNAME أو اسم مستعار، ستحتاج إلى أحد هذين الخيارين: 1) المستمع HTTPS مع الشهادة تم إصدارها بواسطة سلطة اعتماد موثوقة، أو 2) قم بإضافة الوجهة (الاسم أو عنوان IP) إلى TrustedHosts و استخدم بيانات الاعتماديؤدي الخيار الثاني إلى تعطيل المصادقة المتبادلة لهذا المضيف، وبالتالي يقلل النطاق إلى الحد الأدنى الضروري.
يتطلب إعداد مستمع HTTPS شهادة (يفضل من PKI أو سلطة تصديق عامة)، مثبتة في مخزن الفريق ومرتبطة بـ WinRM. بعد ذلك، يُفتح المنفذ 5986/TCP في جدار الحماية، ويُستخدم من العميل. -استخدام SSL في أوامر الأوامر البعيدة. لمصادقة شهادة العميل، يمكنك ربط الشهادة بحساب محلي والاتصال به. -شهادة بصمة الإبهام (لا يقبل Enter-PSSession هذا بشكل مباشر؛ قم بإنشاء الجلسة أولاً باستخدام New-PSSession.)
القفزة الثانية وتفويض أوراق الاعتماد
تظهر "القفزة المزدوجة" الشهيرة عندما تحتاج، بعد الاتصال بخادم، إلى وصول هذا الخادم إلى المورد الثالث بالنيابة عنك (مثلاً، مشاركة SMB). هناك طريقتان للسماح بذلك: CredSSP وتفويض Kerberos المقيد القائم على الموارد.
مع CredSSP تُمكّن العميل والوسيط من تفويض بيانات الاعتماد بشكل صريح، وتُعيّن سياسة (GPO) للسماح بالتفويض إلى أجهزة كمبيوتر مُحددة. يسهل تهيئة هذه السياسة، لكنها أقل أمانًا لأن بيانات الاعتماد تنتقل بنص واضح داخل النفق المُشفّر. احرص دائمًا على تحديد المصادر والوجهات.
البديل المفضل في المجال هو تفويض Kerberos المقيد (التفويض المقيد القائم على الموارد) في AD الحديث. يتيح هذا لنقطة النهاية الاعتماد على استقبال التفويض من نقطة الوسط لخدمات محددة، مما يجنب كشف هويتك عند الاتصال الأولي. يتطلب وحدات تحكم مجال حديثة وRSAT مُحدثة.
نقاط النهاية المخصصة (تكوينات الجلسة)
أحد مزايا الاتصال عن بعد هو القدرة على تسجيل نقاط الاتصال مع القدرات والحدود المخصصةأولاً، قم بإنشاء ملف باستخدام New-PSSessionConfigurationFile (وحدات للتحميل المسبق، والوظائف المرئية، والأسماء المستعارة، وExecutionPolicy، وLanguageMode، وما إلى ذلك)، ثم قم بتسجيله باستخدام Register-PSSessionConfiguration، حيث يمكنك تعيين تشغيل كبيانات اعتماد والأذونات (SDDL أو واجهة المستخدم الرسومية مع -ShowSecurityDescriptorUI).
للحصول على تفويض آمن، قم بعرض ما هو ضروري فقط باستخدام -VisibleCmdlets/-VisibleFunctions وقم بتعطيل البرمجة النصية المجانية إذا كان ذلك مناسبًا باستخدام وضع اللغة لغة مقيدة أو NoLanguage. إذا تركت FullLanguage، فقد يستخدم أحدٌ ما كتلة نصية لاستدعاء أوامر غير مكشوفة، والتي، عند دمجها مع RunAs، سيكون حفرةقم بتصميم هذه النقاط النهائية بدقة متناهية وقم بتوثيق نطاقها.
المجالات، وكائنات نهج المجموعة، والبرامج الجماعية
في AD، يمكنك نشر Powershell Remoting على نطاق واسع باستخدام GPO: السماح بالتكوين التلقائي لمستمعي WinRM، ضبط الخدمة على الوضع التلقائي، وأنشئ استثناء جدار الحماية. تذكر أن كائنات نهج المجموعة (GPOs) تُغيّر الإعدادات، ولكنها لا تُشغّل الخدمة فورًا دائمًا؛ أحيانًا قد تحتاج إلى إعادة التشغيل أو فرض تحديث لوحدة معالجة الرسومات (GPU).
في مجموعات العمل (غير المجالية)، قم بتكوين الاتصال عن بعد باستخدام تمكين PSRemotingعيّن TrustedHosts على العميل (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) واستخدم بيانات اعتماد محلية. بالنسبة لـ HTTPS، يمكنك تثبيت شهادات موقعة ذاتيًا، مع أنه يُنصح باستخدام سلطة تصديق موثوقة. التحقق من صحة الاسم الذي ستستخدمه في -ComputerName في الشهادة (مطابقة CN/SAN).
أوامر cmdlets الرئيسية والقواعد النحوية
حفنة من الكوماندوز تغطي 90% من السيناريوهات اليومية. لتفعيل/إلغاء التفعيل:
Enable-PSRemoting
Disable-PSRemoting
جلسة تفاعلية 1 إلى 1 والخروج:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1 إلى كثير، مع التوازي والاعتمادات:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
جلسات مستمرة وإعادة الاستخدام:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
الاختبار و WinRM مفيد:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
ملاحظات عملية حول جدار الحماية والشبكة والمنافذ
افتح 5985/TCP لـ HTTP و5986/TCP لـ HTTPS على الكمبيوتر المستهدف وعلى أي جدار حماية وسيطفي عملاء Windows، يقوم Enable-PSRemoting بإنشاء قواعد للنطاق والملفات الشخصية الخاصة؛ بالنسبة للملفات الشخصية العامة، يقتصر الأمر على الشبكة الفرعية المحلية ما لم تقم بتعديل النطاق باستخدام Set-NetFirewallRule -RemoteAddress Any (قيمة يمكنك تقييمها استنادًا إلى المخاطر الخاصة بك).
إذا كنت تستخدم تكاملات SOAR/SIEM التي تقوم بتشغيل الأوامر عن بُعد (على سبيل المثال من XSOAR)، فتأكد من أن الخادم يحتوي على حل DNS للمضيفين، والاتصال بـ 5985/5986، وبيانات اعتماد ذات أذونات محلية كافية. في بعض الحالات، قد يتطلب مصادقة NTLM/Basic تعديلًا (مثل استخدام مستخدم محلي في Basic مع SSL).
معلمات تمكين PSRemoting (ملخص التشغيل)
-يطلب التأكيد قبل التنفيذ؛ -فرض يتجاهل التحذيرات وإجراء التغييرات اللازمة؛ - يُفعّل SkipNetworkProfileCheck الاتصال عن بُعد على شبكات العملاء العامة (محدود افتراضيًا بالشبكة الفرعية المحلية)؛ - يُظهر لك WhatIf ما سيحدث دون تطبيق التغييرات. بالإضافة إلى ذلك، ومثل أي أمر cmdlet قياسي، فهو يدعم المعلمات المشتركة (-Verbose، -ErrorAction، وما إلى ذلك).
تذكر أن "تمكين" لا ينشئ مستمعين أو شهادات HTTPS لك؛ إذا كنت بحاجة إلى تشفير من البداية إلى النهاية والمصادقة بناءً على شهادةقم بتكوين مستمع HTTPS والتحقق من صحة CN/SAN مقابل الاسم الذي ستستخدمه في -ComputerName.
أوامر مفيدة للتحكم عن بُعد باستخدام WinRM وPowerShell
بعض أغراض السرير الأساسية ليوم بعد يوم:
winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host
Enter-PSSession -ComputerName host
Enable-PSRemoting -SkipNetworkProfileCheck -Force
عند إدارة نظام ويندوز على نطاق واسع، يتيح لك الاتصال عن بُعد الانتقال من نهج "من جهاز لآخر" إلى نهج إعلاني وآمن. من خلال الجمع بين الجلسات المستمرة، والمصادقة القوية (Kerberos/HTTPS)، ونقاط النهاية المقيدة، وتتبعات واضحة للتشخيصات، تكتسب السرعة والتحكم دون التضحية بالأمان أو التدقيق. إذا قمتَ أيضًا بتوحيد تنشيط GPO وإتقان الحالات الخاصة (المضيفون الموثوق بهم، والقفزة المزدوجة، والشهادات)، فستحصل على منصة عن بُعد متينة للعمليات اليومية والاستجابة للحوادث.
محرر متخصص في قضايا التكنولوجيا والإنترنت بخبرة تزيد عن عشر سنوات في الوسائط الرقمية المختلفة. لقد عملت كمحرر ومنشئ محتوى لشركات التجارة الإلكترونية والاتصالات والتسويق عبر الإنترنت وشركات الإعلان. لقد كتبت أيضًا في مواقع الاقتصاد والمالية والقطاعات الأخرى. عملي هو أيضا شغفي. الآن من خلال مقالاتي في Tecnobits، أحاول استكشاف كل الأخبار والفرص الجديدة التي يقدمها لنا عالم التكنولوجيا كل يوم لتحسين حياتنا.