دليل مبتدئين شامل لبدء استخدام باور شيل عن بُعد

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

هل يبد أنو لديك ما ذ لا يقلل عن ثكلاث مة أجهثزة كمبيريوتًر مزودةا بـ PowerShell ل 7. سيلاكون جهاز واحد هو جهاز الإدارة الخاص بك، والجهازين الآخرهين سيكوتنان الأمجهزة الامبعيد؟ة.
سي تتم استخابدام الأجعهزة الت الالية في هذقا البرنامرج التعلياءمي.
ةذات ل الصتلة:
تترقية PowerShell ع7: دلليل تفصيلمي
ذات ك الصلةي:
إضافة حفسيةاب محل التي في Windows 10ح: دكليلم تف فيص تيلي خطولة بخطكوة الأجهزة البعيدة بطريقة PowerShell.

المتطلبات

هذا البرنامج التعليمي سيكون عرضًا تطبيقيًا عمليًا. إذا كنت ترغب في المتابعة، تأكد من أن لديك ما لا يقل عن ثلاثة أجهزة كمبيوتر مع PowerShell 7. سيكون أحدها جهاز الإدارة الخاص بك، والاثنان الآخران سيكونان الأجهزة البعيدة.

سيتم استخدام الأجهزة التالية في هذا البرنامج التعليمي.

  • A Windows 10 PC with PowerShell 7 installed as the management computer. You will launch remote commands from this machine.
  • A Windows 10 PC with PowerShell 7 installed. This machine will be the endpoint for remote PowerShell over WinRM.
    • A user account on the remote Windows machine with local administrator rights. This tutorial uses a user account called ma.
  • آلة لينكس مع تمكين SSHD لتكون نقطة نهاية بويرشيل عن بُعد عبر SSH. يستخدم هذا البرنامج التعليمي Fedora 35.
    • حساب مستخدم لتنفيذ الأوامر عن بُعد على آلة لينكس. يجب أن يكون للحساب وصول sudo وSSH. يستخدم هذا البرنامج التعليمي حسابًا يُسمى test. أنشئ حساب مستخدم في هذه النقطة إذا لم يكن لديك واحد على آلة لينكس الخاصة بك

تمكين بويرشيل عن بُعد على ويندوز عبر WinRM

عند تثبيت بويرشيل 7، هناك خيار لتمكين التحكم عن بُعد في بويرشيل، وقد قمت بتمكينه آنذاك. ولكن للتأكد، اتبع الخطوات أدناه لتمكين بويرشيل عن بُعد.

1. سجّل الدخول إلى جهاز الكمبيوتر الشخصي البعيد الذي يعمل بنظام Windows 10.

2. افتح بويرشيل كمسؤول.

3. قم بتشغيل الأمر أدناه لتمكين بويرشيل عن بُعد.

Enable-PSRemoting

الأمر ينفذ عدة تغييرات في التكوين، ستشاهدها على وحدة التحكم.

Enabling Remote PowerShell on Windows over WinRM

تمكين بروتوكول Remote PowerShell على نظام Linux عبر SSH

WinRM حصري لنظام Windows، مما يعني أنه لا يمكنك تمكين بروتوكول Remote PowerShell على نظام Linux باستخدامه. بدلاً من ذلك، يمكنك تمكين بروتوكول Remote PowerShell عبر SSH على نظام Linux. بفرض أنك قمت بتثبيت PowerShell بالفعل، اتبع الخطوات التالية.

1. قم بتسجيل الدخول إلى نظام Linux البعيد الخاص بك وافتح جلسة في وحدة التحكم.

2. افتح ملف تكوين خادم SSH في محرر نصوص. استخدم محرر النصوص الذي تفضله، مثل Gedit أو Sublime أو Nano. يستخدم هذا المثال Gedit.

sudo nano /etc/ssh/sshd_config

3. بعد ذلك، قم بإضافة السطر التالي إلى الملف. هذا السطر ينشئ نظامًا فرعيًا SSH يستضيف عملية PowerShell.

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo
Create an SSH subsystem for PowerShell on Linux

4. أغلق المحرر.

5. في النهاية، أعد تشغيل خادم SSH عن طريق تشغيل الأمر التالي.

sudo systemctl restart sshd

إضافة مضيفي Remote PowerShell الموثوق بهم على الجهاز المحلي

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

افتح PowerShell كمسؤول على جهاز الكمبيوتر الخاص بالإدارة الخاص بك.

تشغيل الأمر التالي `winrm`. يضيف هذا الأمر أجهزة Windows (192.168.8.107) و Linux (192.168.8.171) البعيدة إلى قائمة مضيفي الثقة على جهاز الكمبيوتر الخاص بك.

winrm set winrm/config/client '@{TrustedHosts=" 192.168.8.171,192.168.8.107"}'
Adding remote machines as Trusted Hosts

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

بعد تجهيز كل القطع، ستقوم بتنفيذ الأوامر على الجهاز البعيد في هذا القسم.

1. قم بفتح جلسة PowerShell جديدة على جهاز الكمبيوتر الخاص بالإدارة.

2. الآن، قم بتنفيذ الأمر التالي `Invoke-Command` لقائمة أول خمس خدمات على الجهاز البعيد بوصف المستخدم ma. يظهر الأمر الذي يجب تشغيله بين القوسين المتعامدين لمفتاح التبديل ScriptBlock، كما هو موضح أدناه.

Invoke-Command `
    -ComputerName 192.168.8.107 `
    -Credential 'ma' `
    -ScriptBlock { Get-Process | Select-Object -First 5 }
Listing the processes on the remote PowerShell Windows host

3. للقيام بالشيء نفسه مع مضيف Linux بعيد، قم بتشغيل الأمر التالي بدلاً من ذلك. لاحظ أن -HostName استبدل -ComputerName، و -UserName استبدل -ComputerName. تشير هذه المعلمات إلى cmdlet `Invoke-Command` بأن الهدف هو مضيف SSH.

Invoke-Command `
    -HostName 192.168.8.171 `
    -UserName 'test' `
    -ScriptBlock { Get-Process | Select-Object -First 5 }
Listing the processes on the remote PowerShell Linux host

تنفيذ النصوص على أجهزة الكمبيوتر عن بُعد

يمكنك أيضًا تشغيل ملف نص PowerShell على جهاز الكمبيوتر البعيد باستخدام cmdlet `Invoke-Command`. ولكن بدلاً من تحديد معلمة -ScriptBlock، ستحدد معلمة -FilePath تليها مسار الملف النصي المحلي.

1. أولاً، قم بإنشاء ملف نص PowerShell يسمى nametime.ps1 على جهاز الكمبيوتر المحلي الخاص بك.

2. افتح النص في محرر النص المفضل لديك وأضف الكود التالي. احفظ الملف بعد ذلك.

# nametime.ps1
hostname
Get-Date
Create the PowerShell script

3. قم بتنفيذ الأمر Invoke-command مع معلمة -FilePath. يجب أن يشير -FilePath إلى ملف النص البرمجي. في هذا المثال، يكون ملف النص البرمجي في نفس دليل العمل.

# تنفيذ النص البرمجي على PowerShell عن بُعد عبر WinRM
Invoke-Command `
    -ComputerName 192.168.8.107 `
    -Credential 'ma' `
    -FilePath .\nametime.ps1

# تنفيذ النص البرمجي على PowerShell عن بُعد عبر SSH
Invoke-Command `
    -HostName 192.168.8.171 `
    -UserName 'test' `
    -FilePath .\nametime.ps1
Invoke a script on remote PowerShell hosts

إدارة كمبيوتر عن بُعد تفاعليًا

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

1. قم بتنفيذ الأمر Enter-PSSession لبدء جلسة بعيدة على الجهاز الذي يحمل عنوان 192.168.8.107 باستخدام المستخدم ma.

Enter-PSSession -ComputerName 192.168.8.107 -Credential ma

أدخل كلمة مرور حساب المستخدم البعيد، ma، عند الطلب كما هو موضح أدناه.

Entering an interactive remote session

سترى موجهًا جديدًا، كما هو موضح أدناه. يشير عنوان IP داخل الأقواس المربعة إلى مضيف PowerShell البعيد.

Viewing a remote prompt

3. قم بعرض الملفات في دليل العمل الحالي باستخدام الأمر dir، كما هو موضح أدناه. يمكنك تنفيذ العديد من الأوامر في PowerShell داخل الجلسة dir

dir

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

Linting the files on a remote machine

4. قم بتنفيذ الأمر Exit-PSSession أدناه للخروج من الجلسة بمجرد الانتهاء من إدارة الجهاز البعيد.

Exit-PSSession

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

Exiting a remote session

قطع وإعادة توصيل جلسات PowerShell عن بُعد

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

1. قم بتشغيل الأمر New-PSSession لإنشاء جلسة على الكمبيوتر البعيد، 192.168.8.107، باسم المستخدم ma (-Credential). قم بحفظ الجلسة في المتغير $var كما يلي.

$var = New-PSSession -ComputerName 192.168.8.107 -Credential ma

2. قم بتنفيذ المتغير $var لعرض محتوياته كما يلي.

$var

كما هو موضح أدناه، يجب أن ترى كائن جلسة يحتوي على خاصية ComputerType بقيمة “RemoteMachine” وخاصية State بقيمة “Opened”.

Displaying the details of a session

3. قم بتشغيل الأمر Enter-PSSession للدخول إلى الجلسة المخزنة في المتغير $var.

Enter-PSSession $var

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

Entering a persistent remote session

4. قم بإنشاء متغير، $rem1، داخل الجلسة. استخدم أي اسم متغير وسلسلة تعريف تناسبك. ستستخدم هذا المتغير لاحقًا لتحديد ما إذا كنت قد اتصلت بنفس الجلسة.

$rem1 = "same session"

5. قم بتشغيل الأمر التالي للخروج من جلسة PowerShell البعيدة.

Exit-PSSession
Disconnecting from a persistent remote session

6. أعد إنشاء جلسة PowerShell البعيدة.

Enter-PSSession $var

7. قم بتنفيذ المتغير $rem1 في موجه الجلسة البعيدة، كما هو موضح أدناه، لعرض قيمته.

$rem1

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

Viewing the value of a session variable

8. قم بتشغيل أمر Exit-PSSession للخروج من الجلسة مرة أخرى على النحو التالي.

Exit-PSSession

9. وأخيرًا، قم بتنفيذ Invoke-Command مع تبديل session المعين إلى $var لعرض اسم الجهاز البعيد في نفس الجلسة البعيدة. يعد هذا الأسلوب وسيلة بديلة لتشغيل الأوامر في نفس الجلسة دون الاتصال والفصل وإعادة الاتصال يدويًا إلى جلسة واحدة.

Invoke-Command -Session $var -ScriptBlock {hostname}
Displaying the hostname of a remote machine

10. قم بتشغيل أمر Remove-PSSession لإزالة الجلسة المخزنة في $var تمامًا.

Remove-PSSession $var

الاستنتاج

تهانينا! بإنهاء هذا البرنامج التعليمي، لقد تعلمت كيفية إدارة نظام Windows أو Linux بواسطة PowerShell البعيد. هدف هذا الدليل هو تجربة قدمك. لماذا لا تغوص أعمق مع PowerShell على Linux عبر جلسة بعيدة؟

Source:
https://adamtheautomator.com/remote-powershell/