כיצד לשלוט במחשב שלך מהטלפון הנייד שלך באמצעות PowerShell Remoting

העדכון אחרון: 15/10/2025

  • ניהול מרחוק משתמש ב-WinRM/WS-Man ‏(HTTP/HTTPS) ומאפשר הפעלות של 1 ל-1, 1 לרבים ופגישות מתמשכות עם בקרות אבטחה.
  • הפעלת PSRemoting מגדירה את השירות, המאזינים וחומת האש; HTTPS דורשת אישור תקף והתאמת CN/SAN.
  • התוצאות מוחזרות ללא סידור; מתודות מופעלות בתוך בלוק הסקריפטים המרוחק ונקודות קצה מותאמות אישית משמשות להאצלה מדויקת.
שליטה מרחוק ב-PowerShell

ייתכן שכבר אתם עושים אוטומציה של משימות רבות באמצעות PowerShell באופן מקומי, אבל איפה אתם באמת עושים זאת? PowerShell Remoting עושה את ההבדל זה קורה כאשר אתה מפעיל פקודות על מכונות מרוחקות, בין אם כמה או מאות, באופן אינטראקטיבי או במקביל. טכנולוגיה זו, הזמינה מאז Windows PowerShell 2.0 ומשופרת מאז 3.0, מבוססת על WS-Management (WinRM) וממירה PowerShell בערוץ ניהול מרחוק חזק, ניתן להרחבה ומאובטח.

ראשית, חשוב להבין שני רעיונות מרכזיים: cmdlets עם פרמטר -שם מחשב (למשל, Get-Process או Get-Service) אינם הנתיב ארוך הטווח המומלץ על ידי מיקרוסופט, ו-PowerShell Remoting אינו פועל כ"פריצה". למעשה, אוכף אימות הדדי, מבצע ביקורת על יומני רישום ומכבד את ההרשאות הרגילות שלך, מבלי לאחסן אישורים או להפעיל באופן קסום שום דבר עם הרשאות-על.

מהו PowerShell Remoting ולמה להשתמש בו?

עם מרחוק PowerShell אתה יכול לבצע כמעט כל פקודה מרחוק שתוכלו להפעיל בהפעלה מקומית, החל משאילתות שירותים ועד פריסת תצורות, ולעשות זאת על מאות מחשבים בו זמנית. בניגוד ל-cmdlets שמקבלים את -ComputerName (רבים משתמשים ב-DCOM/RPC), Remoting נוסע דרך WS-Man (HTTP/HTTPS), שהוא ידידותי יותר לחומת אש, מאפשר מקביליות ומעביר עומסי עבודה למארח המרוחק, לא ללקוח.

זה מתורגם לשלושה יתרונות מעשיים: ביצועים טובים יותר בהוצאות להורג המוניות, פחות חיכוך ברשתות עם כללים מגבילים ומודל אבטחה התואם את Kerberos/HTTPS. יתר על כן, בכך שאינו תלוי בכל cmdlet כדי ליישם את הגישה מרחוק שלו, Remoting זה עובד עבור כל תסריט או תפקיד אשר זמין ביעד.

כברירת מחדל, שרתי Windows עדכניים מגיעים עם הפעלה מרחוק; ב-Windows 10/11 אתה מפעיל את זה עם cmdlet יחיד. וכן, ניתן להשתמש באישורים חלופיים, הפעלות מתמשכות, נקודות קצה מותאמות אישית ועוד.

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

ארכיטקטורת PowerShell מרחוק

איך זה עובד בפנים: WinRM, WS-Man ופורטים

PowerShell Remoting פועל במודל לקוח-שרת. הלקוח שולח בקשות WS-Management דרך HTTP (5985/TCP) או HTTPS (5986/TCP)ביעד, שירות הניהול מרחוק של Windows (WinRM) מאזין, מזהה את נקודת הקצה (תצורת הפעלה) ומארח את הפעלת PowerShell ברקע (תהליך wsmprovhost.exe), החזרת תוצאות סידוריות ללקוח ב-XML דרך SOAP.

בפעם הראשונה שתפעילו Remoting, המאזינים מוגדרים, חריג חומת האש המתאים נפתח, ויצירת תצורות הפעלה. מ-PowerShell 6+, קיימות מספר מהדורות במקביל, ו הפעלת PSRemoting רושם נקודות קצה עם שמות המשקפים את הגרסה (לדוגמה, PowerShell.7 ו-PowerShell.7.xy).

תוכן בלעדי - לחץ כאן  איך לדעת אם פרצו לי לפייסבוק

אם אתם מאפשרים רק HTTPS בסביבה שלכם, תוכלו ליצור מאזין בטוח עם אישור שהונפק על ידי רשות אישורים מהימנה (מומלץ). לחלופין, חלופה נוספת היא להשתמש ב-TrustedHosts באופן מוגבל ומודע לסיכונים, עבור תרחישי קבוצת עבודה או מחשבים שאינם בתחום.

שים לב ש-Powershell Remoting יכול להתקיים במקביל ל-cmdlets עם -ComputerName, אבל מיקרוסופט מקדמת את WS-Man כדרך הסטנדרטית והמתאימה לעתיד לניהול מרחוק.

הפעלת PowerShell Remoting ופרמטרים שימושיים

ב-Windows, פשוט פתחו את PowerShell כמנהל והפעילו הפעלת PSRemotingהמערכת מפעילה את WinRM, מגדירה את ההפעלה האוטומטית, מאפשרת את המאזין ויוצרת את כללי חומת האש המתאימים. בלקוחות עם פרופיל רשת ציבורי, ניתן לאפשר זאת במכוון באמצעות -דלג על בדיקת פרופיל רשת (ולאחר מכן לחזק באמצעות כללים ספציפיים):

Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force

 

התחביר מאפשר גם, -לְאַשֵׁר y -מה אם לשליטה בשינויים. זכרו: זה זמין רק ב-Windows, ועליך להפעיל את הקונסולה המוגבהת. הכללים שנוצרים שונים בין מהדורות Server ו-Client, במיוחד ברשתות ציבוריות, שבהן כברירת מחדל הם מוגבלים לתת-הרשת המקומית אלא אם כן אתה מרחיב את ההיקף (לדוגמה, באמצעות Set-NetFirewallRule).

כדי לרשום את תצורות ההפעלה שכבר הוקלטו ולאשר שהכל מוכן, השתמשו Get-PSSessionConfigurationאם מופיעות נקודות הקצה של PowerShell.x, ואם רלוונטי, של Workflow, מסגרת ה-Remoting פעילה.

הפעלה מרחוק עם PowerShell

מצבי שימוש: 1 ל-1, 1 לרבים, וסשנים מתמשכים

כאשר אתם זקוקים לקונסולה אינטראקטיבית במחשב יחיד, פנו אל הזן- PSSessionתופיע הפקודה, וכל מה שתבצעו יועבר למארח המרוחק. ניתן לעשות שימוש חוזר באישורים באמצעות Get-Credential כדי להימנע מהזנה חוזרת ונשנית שלהם:

$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession

אם מה שאתם מחפשים זה לשלוח פקודות למספר מחשבים בו זמנית, הכלי הוא הפקודה 'הפעל' עם scriptblock. כברירת מחדל, הוא מפעיל עד 32 חיבורים בו זמנית (ניתן להתאמה באמצעות -ThrottleLimit). התוצאות מוחזרות כ- אובייקטים שעברו ביטול סידור (ללא שיטות "חיות"):

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred

צריך להפעיל מתודה כמו .Stop() או .Start()? עשה זאת. בתוך בלוק הסקריפט בהקשר המרוחק, לא באובייקט המקומי שעבר ביטול סידור, וזהו. אם יש cmdlet מקביל (Stop-Service/Start-Service), בדרך כלל עדיף להשתמש בו לשם הבהירות.

כדי להימנע מעלות התחלת וסיום של מפגשים בכל שיחה, צור PSSession מתמשך ושימוש חוזר בו על פני מספר הפניות. השתמש ב-New-PSSession כדי ליצור את החיבור, והשתמש ב-Invoke-Command-Session כדי לעשות שימוש חוזר במנהרה. אל תשכח לסגור אותה באמצעות Remove-PSSession כשתסיים.

סידור, מגבלות ושיטות עבודה מומלצות

פרט חשוב: בעת נסיעה, חפצים "מתשטחים" ומגיעים כ תמונות בזק שעברו ביטול סידור, עם מאפיינים אך ללא מתודות. זה מכוון וחוסך רוחב פס, אבל זה אומר שלא ניתן להשתמש באיברים שמבצעים לוגיקה (כמו .Kill()) על העותק המקומי. הפתרון ברור: להפעיל את המתודות הללו. מרחוק ואם אתם צריכים רק שדות מסוימים, סננו באמצעות Select-Object כדי לשלוח פחות נתונים.

תוכן בלעדי - לחץ כאן  מה חדש ב-Norton AntiVirus עבור Mac?

בסקריפטים, יש להימנע מ-Enter-PSSession (המיועד לשימוש אינטראקטיבי) ולהשתמש ב-Invoke-Command עם בלוקי סקריפט. אם אתם צופים קריאות מרובות או צריכים לשמר מצב (משתנים, מודולים מיובאים), השתמש בהפעלות מתמשכות ואם רלוונטי, נתק/חבר אותם מחדש באמצעות Disconnect-PSSession/Connect-PSSession ב-PowerShell 3.0+.

אימות, HTTPS ותרחישים מחוץ לדומיין

בדומיין, אימות מקורי הוא Kerberos והכל זורם. כאשר המכשיר לא יכול לאמת את שם השרת, או שאתה מתחבר לכתובת IP או כינוי של CNAME, אתה זקוק לאחת משתי האפשרויות הבאות: 1) מאזין HTTPS עם אישור שהונפק על ידי רשות אישורים שאתה סומך עליה, או 2) הוסף את היעד (שם או IP) ל-TrustedHosts ו- השתמש באישוריםהאפשרות השנייה מבטלת אימות הדדי עבור מארח זה, כך שהיא מצמצמת את ההיקף למינימום ההכרחי.

הגדרת מאזין HTTPS דורשת אישור (רצוי מה-PKI שלך או מ-CA ציבורי), המותקן במאגר הצוות ומקושר ל-WinRM. לאחר מכן, פורט 5986/TCP נפתח בחומת האש, ונעשה בו שימוש מהלקוח. -השתמש ב-SSL ב-cmdlets מרוחקים. לאימות תעודת לקוח, ניתן למפות תעודה לחשבון מקומי ולהתחבר אליה -תעודת טביעת אגודל (Enter-PSSession לא מקבל זאת ישירות; צור את הסשן תחילה באמצעות New-PSSession.)

הקפיצה השנייה והאצלת אישורים

ה"קפיצה הכפולה" המפורסמת מופיעה כאשר, לאחר התחברות לשרת, אתה זקוק לשרת זה כדי לגשת ל... משאב שלישי בשמך (למשל, שיתוף SMB). ישנן שתי גישות לאפשר זאת: CredSSP והאצלת Kerberos מוגבלת מבוססת משאבים.

עם CredSSP אתה מאפשר ללקוח ולמתווך להאציל באופן מפורש אישורים, ואתה מגדיר מדיניות (GPO) שתאפשר האצלה למחשבים ספציפיים. הגדרה מהירה, אך פחות מאובטח מכיוון שהאישורים נעים בטקסט רגיל בתוך המנהרה המוצפנת. הגבל תמיד מקורות ויעדים.

האלטרנטיבה המועדפת בתחום היא האצלת Kerberos מוגבלת (הקצאה מוגבלת מבוססת משאבים) ב-AD מודרני. זה מאפשר לנקודת הקצה להסתמך על קבלת הקצאה מנקודת האמצע עבור שירותים ספציפיים, תוך הימנעות מחשיפת זהותך בחיבור הראשוני. דורש בקרי תחום עדכניים ו-RSAT מעודכן.

נקודות קצה מותאמות אישית (תצורות סשן)

אחת היתרונות של Remoting היא היכולת לרשום נקודות חיבור עם יכולות ומגבלות מותאמות אישיתראשית, עליך ליצור קובץ עם New-PSSessionConfigurationFile (מודולים לטעינה מראש, פונקציות גלויות, כינויים, ExecutionPolicy, LanguageMode וכו'), ולאחר מכן לרשום אותו עם Register-PSSessionConfiguration, שם תוכל להגדיר הפעלת אישורים והרשאות (ממשק SDDL או GUI עם -ShowSecurityDescriptorUI).

לצורך הקצאה בטוחה, יש לחשוף רק את מה שדרוש באמצעות -VisibleCmdlets/-VisibleFunctions ולהשבית סקריפטים חופשיים במידת הצורך באמצעות מצב שפה מוגבל שפה או ללא שפה. אם תעזוב את FullLanguage, מישהו יוכל להשתמש בבלוק סקריפט כדי להפעיל פקודות שלא נחשפו, אשר בשילוב עם RunAs, זה יהיה חורתכננו את נקודות הקצה הללו במסרק דק ותעדו את היקפן.

דומיינים, אובייקטי מדיניות קבוצתית (GPO) ו-Groupware

ב-AD ניתן לפרוס Powershell Remoting בקנה מידה גדול עם GPO: לאפשר תצורה אוטומטית של מאזיני WinRM, הגדר את השירות לאוטומטי, וליצור את חריג חומת האש. זכור ש-GPO משנים הגדרות, אך הם לא תמיד מפעילים את השירות באופן מיידי; לפעמים עליך להפעיל מחדש או לאלץ gpupdate.

תוכן בלעדי - לחץ כאן  בקרת חומת האש של Windows, התוכנית הטובה ביותר לשליטה בחומת האש

בקבוצות עבודה (שאינן בתחום), הגדר את ההגדרה של Remoting עם הפעלת PSRemoting, הגדר TrustedHosts בלקוח (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) והשתמש באישורים מקומיים. עבור HTTPS, ניתן לטעון אישורים חתומים עצמית, למרות שמומלץ להשתמש ב-CA מהימן ו- לאמת את השם שתשתמש ב- -ComputerName בתעודה (התאמת CN/SAN).

מפתחות cmdlet ותחביר

קומץ חיילי קומנדו מכסים את 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).

פרמטרים של Enable-PSRemoting (סיכום תפעולי)

-אישור מבקש אישור לפני ביצוע; -כפייה מתעלם מהאזהרות ולבצע את השינויים הדרושים; -SkipNetworkProfileCheck מאפשר שליטה מרחוק ברשתות לקוח ציבוריות (מוגבל כברירת מחדל לתת-רשת מקומית); -WhatIf מראה לך מה יקרה ללא החלת שינויים. בנוסף, כמו כל cmdlet סטנדרטי, הוא תומך פרמטרים נפוצים (-מפורט, -פעולת שגיאה וכו').

זכור ש"הפעלה" אינה יוצרת עבורך מאזיני 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

בעת ניהול Windows בקנה מידה גדול, Remoting מאפשר לך לעבור מ"מחשב למחשב" לגישה הצהרתית ומאובטחת. על ידי שילוב של הפעלות מתמשכות, אימות חזק (Kerberos/HTTPS), נקודות קצה מוגבלות ומעקבים ברורים לאבחון, אתה צובר מהירות ושליטה מבלי להתפשר על אבטחה או ביקורת. אם גם תתקנו את הפעלת GPO ותשלטו במקרים מיוחדים (TrustedHosts, double hop, אישורים), תהיה לכם פלטפורמה מרחוק איתנה לפעולות יומיומיות ולתגובה לאירועים.

תוכנות זדוניות בלתי נראות
Artaculo relacionado:
כיצד להגן על המחשב שלך מפני תוכנות זדוניות בלתי נראות כמו XWorm ו-NotDoor