מדריך מעמיק להתחלה עם פווהרשל מרוחק

האם פעם חלמת להפעיל פקודות PowerShell על מכונה מרוחקת מנוחת העבודה שלך? עם סיוע מרחוק של PowerShell, זה אפשרי. עם PowerShell מרחוק, תוכל להפעיל פקודות וסקריפטים על מספר מכונות מרוחקות באופן יעיל.

נשמע מעניין? המשך לקרוא כדי ללמוד כיצד לשלוט על אלה המכונות הרחוקות בדרך של 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.
  • מחשב Linux עם SSHD מאופשר כדי לשרת כנקודת קצה של PowerShell רחוקה מעל SSH. במדריך זה משמש Fedora 35.
    • חשבון משתמש כדי לבצע פקודות רחוקות על מחשב ה-Linux. החשבון צריך להיות עם גישת sudo וגישה SSH. במדריך זה משמש חשבון בשם test. צור חשבון משתמש בנקודה זו אם אין לך חשבון במחשב ה-Linux שלך

אפשרות להפעיל את PowerShell הרחוק בווינדוס מעל WinRM

כאשר אתה מתקין את PowerShell 7, קיימת אפשרות להפעיל גישה ל-PowerShell רחוק, ואולי הפעלת אותה אז. אך, כדי לוודא, עקוב אחר השלבים הבאים כדי להפעיל PowerShell רחוק.

1. התחבר למחשב Windows 10 רחוק.

2. פתח את PowerShell כמנהל.

3. הרץ את הפקודה הבאה כדי לאפשר PowerShell רחוק.

Enable-PSRemoting

הפקודה מבצעת מספר שינויים בתצורה, שתוכל לראות בקונסול.

Enabling Remote PowerShell on Windows over WinRM

הפעלת PowerShell מרחוק על Linux דרך SSH

WinRM היא בלעדית ל-Windows, וזו אומרת שאין אפשרות להפעיל PowerShell מרחוק על Linux דרך זו. במקום זאת, ניתן להפעיל PowerShell מרחוק על Linux דרך SSH. בהנחה שכבר התקנת PowerShell, עקוב אחרי השלבים הבאים.

1. התחבר למערכת Linux מרחוק ופתח סשן בטרמינל.

2. פתח את קובץ התצורה של שרת ה-SSH בעורך טקסט. השתמש בעורך טקסט שבחרת, כמו Gedit, Sublime, או Nano. בדוגמה זו אנו משתמשים ב-Gedit.

sudo nano /etc/ssh/sshd_config

3. לאחר מכן, הוסף את השורה הבאה לקובץ. שורה זו יוצרת subsystem של SSH שמכיל תהליך של PowerShell.

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

4. סגור את העורך.

5. לבסוף, הפעל מחדש את שרת ה-SSH על ידי הפעלת הפקודה הבאה.

sudo systemctl restart sshd

הוספת מארחים אמינים של PowerShell מרחוק במחשב המקומי

בנקודה זו, המחשב המרוחק שלך מוכן לקבל פקודות. אך, המחשב הניהולי שלך עשוי לסרב להתחבר למארחי 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. הרץ את פקודת ה-\code{New-PSSession} כדי ליצור ישיבה במחשב הרחוק, \code{192.168.8.107}, כמשתמש \code{ma} (\code{-Credential}). שמור את הישיבה במשתנה, \code{\$var}, כך:

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

2. בצע את המשתנה, \code{\$var}, כדי לראות את תוכנו כך:

$var

. כפי שמוצג למטה, תראה אובייקט ישיבה עם RemoteMachine ComputerType ו־State המוגדרים ל־Opened

Displaying the details of a session

.

3. הרץ את פקודת ה-\code{Enter-PSSession} כדי להיכנס לישיבה השמורה ב-\code{\$var}

Enter-PSSession $var

. אם הכל בסדר, הפרומפט ישתנה לפרומפט רחוק ללא פלט נוסף, כפי שמוצג למטה

Entering a persistent remote session

.

4. צור משתנה, \code{\$rem1}, בתוך הישיבה. השתמש בשם משתנה ומחרוזת זיהוי שתבחר. תשתמש במשתנה זה מאוחר יותר כדי לקבוע האם התחברת לאותה ישיבה

$rem1 = "same session"

.

5. הרץ את הפקודה למטה כדי לצאת מהישיבה של PowerShell הרחוקה

Exit-PSSession
Disconnecting from a persistent remote session

.

6. הקמת ישיבה של PowerShell הרחוקה מחדש

Enter-PSSession $var

.

7. בצע את המשתנה \code{\$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/