Psexec: מדריך מפורט עם דוגמאות מהעולם האמיתי

אם הייתה יכולת פקודת-שורה שיכולה להתחרות עם robocopy בנוגע לשימושיות, זו PsExec. הכלי PsExec של Sysinternals הוא כמעט כה נפוץ ככלי נשק בקרבי מנהלי מערכות מידע. כלי זה מאפשר למנהלים להריץ פקודות מרחוק כאילו הם במחשב המקומי.

כדי לכסות את הכלי PsExec בעומק, היה הולם לכסות את הכלי הנחמד הזה ב-מדריך יולטימטיבי של ATA. במסמך זה, תלמד מהו psexec, מהם היכולות שלו ומספר דוגמאות לשימוש בכלי זה.

מהו PsExec.exe?

אם אתה חדש בתחום הטכנולוגיה או אולי לא הייתם זקוקים עד כה להפעלת פקודות וכלים על מחשבים מרוחקים, ייתכן שאתה לא יודע מהו psexec.

PsExec או psexec.exe הוא יכולת שורת פקודה שנבנתה עבור Windows. זה מאפשר למנהלים להריץ תוכניות במחשבים מקומיים ויותר נפוצה מכך – במחשבים מרוחקים. זהו כלי חינמי החלק מה-Sysinternals pstools suite שנבנה על ידי Mark Russinovich לפני שנים רבות.

נבנה כדי להחליף כלים כמו telnet שגרמו לך לפתוח פורטים ולהכניס למערכת פתחים אבטחה. כיום יש לנו אפשרויות אחרות כמו פוש PowerShell Remoting וה-Invoke-Command cmdlet אך PsExec עדיין מחזיק במקומו.

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

הוא תומך בכל גרסה של Windows מ-Windows XP והלאה. זה אומר ש-PsExec עובד גם ב-Windows 10. זו כלי פשוט להפעלה שעובד על כמעט כל דבר, אך אל תבלבל את פשוטותו עם יכולותיו!

תנאים מוקדמים

יש רק צורך להריץ מערכת הפעלה מודרנית של Windows כדי ש-PsExec יתפעל על המחשב המקומי שלך. אך כדי להפעיל psexec נגד מחשבים רחוקים, יהיה עליך לוודא שכמה פריטים נמצאים במקום.

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

למעתה, בכתיבת המאמר הזה, PsExec נמצא בגרסה 2.2 וזו תהיה הגרסה שבה תלמד במאמר זה.

התקנת PSexec (עם הגדרת המחשב הרחוק)

טכנית, בפועל אין צורך ל התקין את PsExec מכיוון שזו רק יומצאי של פקודות אך זה דומה מספיק. מכיוון שאין צורך בהתקנה, אתה פשוט צריך ל הוריד ולחלץ אותו מקובץ ה-ZIP של PsTools. PsExec אינו זמין ככלי עצמאי והוא חלק ממובן הכלים של PsTools.

הורדת PSExec

ניתן לחלץ את קובץ ה-ZIP ידנית או להשתמש בקטע קוד PowerShell שיעזור לך להוריד ולחלץ את PsExec מקובץ ה-ZIP של pstools. שים לב שזה יסיר את כל יתר הכלים של PsTools. רובם עדיין שימושיים, אך לא נכנס לתיאורם במאמר זה.

PS> Invoke-WebRequest -Uri 'https://download.sysinternals.com/files/PSTools.zip' -OutFile 'pstools.zip'
PS> Expand-Archive -Path 'pstools.zip' -DestinationPath "$env:TEMP\pstools"
PS> Move-Item -Path "$env:TEMP\pstools\psexec.exe" .
PS> Remove-Item -Path "$env:TEMP\pstools" -Recurse

הגדרת מחשב מרוחק

לאחר שהורדת את PsExec, עליך לוודא שכל המחשב המרוחק שבו אתה מתכוון להריץ אותו פתוח. ל-PsExec יש דרישות פשוטות; יש להפעיל את שיתוף קבצים ומדפסות ולוודא שהשיתוף המנהלי admin$ זמין.

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

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

Allowing File and Print Sharing in the Windows Firewall

או שניתן לבקר בכל מחשב ולהפעיל את יחידת netsh כדי לפתוח אותו דרך:

> netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes

או שניתן להשתמש בפקודת ה-PowerShell Set-NetFirewallRule כדי לעשות זאת.

PS51> Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Private

אם היית מעדיף שלא לבקר בכל מחשב, תוכל גם להשתמש ב- PowerShell Remoting ואתה נמצא בדומיין של Active Directory, תוכל גם לפתוח את הגדרות הגישה לחומת האש על מספר רב של מחשבים בו זמנית באמצעות הפקודה Invoke-Command.

PS51> Invoke-Command -ComputerName PC1, PC2, PC3 -ScriptBlock { Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Private }

שימוש ב- PsExec

לפני שתוכל לרוץ, עליך ללכת. אם אף פעם לא השתמשת ב- PsExec, אתה בדרך להנאה! ודא שקראת את הקטע הזה תחילה כדי להכין את הרגלים שלך ללמוד את היסודות לפני שתקפוץ למים עמוקים מאוחר יותר במאמר זה.

הפעם הראשונה שתריץ את PsExec על מערכת חדשה, תראה מיידית את ההסכם לרישיון של PsExec. עליך ללחוץ על הכפתור הסכם כדי להתחיל להשתמש בו.

PSExec license agreement (EULA)

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

> psexec /accepteula

תלמד מספר טריקים להשתיק את חלון ה-EULA הזה במחשבים מקומיים ומרחוק מאוחר יותר במאמר זה.

מציאת עזרה

כאשר אתה חוקר את PsExec, לא עליך להשתמש בשום מפתח כלל. כאשר אתה רץ פשוט את psexec ללא מפתחות, הוא יחזיר את כל האפשרויות והסבר קצר על מה כל אחת עושה. כל האפשרויות נמצאות בטבלה למטה לנוחותך.

Switch Explanation
-a Separate processors on which the application can run with commas where 1 is the lowest numbered CPU. For example, to run the application on CPU 2 and CPU 4, enter: “-a 2,4”
-c Copy the specified program to the remote system for execution. If you omit this option the application must be in the system path on the remote system.
-d Don’t wait for process to terminate (non-interactive).
-e Does not load the specified account’s profile.
-f Copy the specified program even if the file already exists on the remote system.
-i Run the program so that it interacts with the desktop of the specified session on the remote system. If no session is specified the process runs in the console session. Some have reported best results always using the -s switch with -i due to windows being unintelligible.
-h If the target system is Vista or higher, has the proc
-l Run process as limited user (strips the Administrators group and allows only privileges assigned to the Users group). On Windows Vista the process runs with Low Integrity.
-n Specifies timeout in seconds connecting to remote computers.
-p Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password.
-r Specifies the name of the remote service to create or interact. with.
-s Run the remote process in the System account.
-u Specifies optional user name for login to computer.
-v Copy the specified file only if it has a higher version number or is newer on than the one on the remote system.
-w Set the working directory of the process (relative
-x Display the UI on the Winlogon secure desktop (local system only).
-arm Specifies the remote computer is of ARM architecture.
-priority Specifies -low, -belownormal, -abovenormal, -high or
-realtime run the process at a different priority. Use
-background run at low memory and I/O priority on Vista.
computer Direct PsExec to run the application on the computer or computers specified. If you omit the computer name PsExec runs the application on the local system, and if you specify a wildcard (\*), PsExec runs
@file PsExec will execute the command on each of the computers listed in the file.
-accepteula This flag suppresses the display of the license dialog.
-nobanner Do not display the startup banner and copyright message.

הרצת פקודה פשוטה מרחוק

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

שים לב שאם אתה לא מציין נתיב כולו של קובץ, הפקודה להרצה חייבת להיות בנתיב המשתמש או המערכת. גם אם יש לך תוכנית עם רווחים בשם, תוכל תמיד לסגור את התוכנית ברווחים כמו “my application.exe”.

> psexec \\REMOTECOMPUTER hostname

תוכל לראות למטה שכדי לבצע את הפקודה hostname על המחשב CONTOSODC1, אתה מגדיר את נתיב ה-UNC שלו לאחר הפקודה. PSExec יתחבר למחשב המרוחק בצורה מאובטחת, יבצע את הפקודה ויחזיר את הפלט. במקרה זה, הפקודה hostname החזירה את שם המחשב שהוא CONTOSODC1.

אם הפקודה אינה cmd או קונסול אחרת, PsExec יסיים מהר לחיבור המרוחק ויחזיר את קוד היציאה שהתהליך המרוחק החזיר.

הערה: השגיאה או קוד היציאה שנמסרים מ-psexec אינם באים מ-PsExec עצמו. במקום זה, הם באים מהפקודה ש-psexec הפעיל על המחשב המרוחק.

Successful psexec remote command execution

איך פועל PsExec על מחשבים מרוחקים

PsExec עובר דרך מספר שלבים כדי להריץ תוכניות על מחשבים מרוחקים.

  1. צור קובץ PSEXESVC.exe בתיקיית C:\Windows.
  2. צור והפעל שירות Windows בשם PsExec על המחשב המרוחק.
  3. הרץ את התוכנית תחת תהליך אב מסוג psexesvc.exe.
  4. כאשר התהליך הושלם, שירות ה- PsExec של Windows יופסק ויסר.

כאשר התהליך לא פועל באופן נכון ב-100%, עשויים להיות עליך להסיר את השירות באופן ידני באמצעות הפקודה sc.

הרצת פקודה מקומית פשוטה

אף על פי שהשימוש הנפוץ ב- PsExec הוא להפעיל פקודות על מחשבים מרוחקים, תוכל גם להפעיל פקודות מקומית.

תוכל להפעיל פקודות מקומית פשוט על ידי שאילתת שם מחשב כשאין לך צורך לספק.

> psexec <local command or EXE file>

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

תבחינו בסרטון הקצר למטה. שימו לב שתצטרכו פשוט לספק את המתג -s יחד עם מפעיל הפקודות כדי ש- psexec ישים לתוקף סשן פקודה חדש כ-NT AUTHORITY\SYSTEM.

Running Psexec as SYSTEM

פקודות PsExec (התקדמות נוספת)

כשיש לך את היסוסים, תוכל ללמוד טכניקות מתקדמות יותר ב- psexec. PsExec יכול לעשות הרבה יותר מאשר להפעיל פקודה אחת על מחשב יחיד.

הרצת פקודות על מספר מחשבים

PsExec אינו מוגבל להרצת פקודות על מחשב מרוחק בכל פעם. הכלי תומך גם בהעתקת תוכניות והפעלת פקודות על מספר מחשבים בו זמנית.

תוכל להריץ את PsExec על מספר מחשבים בכמה דרכים שונות.

שמות מחשבים מופרדים בפסיק

בדרך כלל, כאשר מריצים פקודה על מחשב רחוק יחיד, יש לציין שם מחשב יחיד כמו \\REMOTECOMPUTER. ניתן גם לציין מספר מחשבים מרובים מופרדים בפסיקים כמו בדוגמה הבאה.

> psexec \\REMOTECOMPUTER1,REMOTECOMPUTER2,REMOTECOMPUTER3

כל המחשבים בתחום של רשות הפעילות

אם אתה מריץ את PsExec על מחשב מצורף לתחום של רשות הפעילות ב-Active Directory ותרצה להריץ פקודת ביצוע פצצה על כל המחשבים בתחום הזה, ניתן להשתמש בתו כוכב.

PsExec יחפש בכל תחום ה-Active Directory שלך וינסה להריץ פקודה על כל מחשב. למטה דוגמה לתחביר שבו PsExec ינסה להתחבר לכל מחשב בתחום שבו המחשב המבצע חלק ולהריץ את הפקודה hostname.

> psexec \\* hostname

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Enumerating domain...

שים לב שאם תשתמש בכוכבית כדי למצוא את כל המחשבים בתחום בעוד המחשב המקומי הוא חלק של קבוצת עבודה, תקבל את השגיאה שגיאת מערכת אחת התרחשה: 6118.

שימוש בתו כוכב מכריח את PsExec לרוץ בגדול את הפקודה net view /all כדי למצוא תחילה את כל המחשבים בתחום. זוהי דרך מיושנת למצוא מידע על מחשבים עקב תלותה ב-NetBIOS.

קריאה מקובץ

דרך נוספת להריץ פקודות על מספר מחשבים בו זמנית היא להשתמש בקובץ טקסט. באמצעות התחביר @<שם קובץ.txt>, PsExec יקרא כל שורה בקובץ הטקסט כאילו הייתה שם מחשב. כל מחשב יעובד בנפרד.

למטה תוכל לראות דוגמה לשימוש ב-PowerShell כדי ליצור קובץ טקסט עם שמות מחשבים מופרדים בשורות ולהשתמש בזה כקלט עבור psexec.

PS51> (Get-AdComputer -Filter *).Name | Out-File computers.txt
PS51> psexec @computers.txt hostname

העתקת תוכניות מקומיות למחשב רחוק

שימוש במפתח -c, psexec יעתיק כל תוכנית מקומית למחשב המרוחק לפני ביצוע.

אולי יש לך קובץ EXE במחשב המקומי שלך בתיקייה C:\Tools ותרצה להריץ אותו במחשב מרוחק. באפשרותך לעשות זאת באמצעות התחביר הבא:

> psexec \\REMOTECOMPUTER -c C:\Tools\program.exe

כאשר אתה משתמש במפתח -c ולא מציין קובץ ביצוע, PsExec עדיין יעתיק את הקובץ אך תקבל שגיאה המציינת המערכת לא מצליחה למצוא את הקובץ המסוים. זה קורה מכיוון ש-PsExec תמיד ינסה להריץ את הקובץ שהוא מעתיק.

אם נדרש לך להעתיק קבצים למחשבים מרוחקים לפני שאתה משתמש ב-PsExec, השתמש ב-Copy-Item PowerShell cmdlet במקום זאת.

ביצוע תהליכים מרוחקים תחת אישורי גישה אלטרנטיביים

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

בשימוש במפתח -u ואופציונלי -p מאפשר לך להתחבר למחשב המרוחק עם חשבון משתמש אלטרנטיבי. PsExec יצפין את שני שם המשתמש והסיסמה וישלח אותם למחשב המרוחק לאימות.

לדוגמה, אם אתה בקבוצת עבודה, תצטרך תמיד לציין את שם המשתמש כדי לאמת את החיבור למחשב המרוחק.

> psexec \\REMOTECOMPUTER hostname -u localadmin -p secret-p@$$word

אם שני המחשבים הם חברי רשת של Active Directory, וודא שאתה מקדם את שם המשתמש עם שם הדומיין.

> psexec \\REMOTECOMPUTER hostname -u contoso.local\domainadmin -p secret-p@$$word

שים לב שכאשר אינך משתמש במפתח -u, psexec משקף את החשבון שלך המחובר במחשב המרוחק. לא יהיה לו גישה לשום משאבי רשת.

הפעלת תהליכים כחשבון SYSTEM מקומי

אחת מהתכונות המועילות ביותר של הפעלת PsExec תחת חשבון אלטרנטיבי היא שימוש במפתח -s. מפתח זה מאפשר ל-PsExec (וליישום שמופעל מרחוק שלך) לרוץ בחשבון SYSTEM מקומי של המחשב המרוחק (או המקומי).

שים לב שמטה לא כללתי שם של מחשב מרוחק. PsExec יריץ גם על המחשב המקומי באותה הנחה. במקרה זה, אני משתמש באפשרות -s כדי לספר ל-PsExec להפעיל פקודת פתיחת פקודה מקומית כחשבון SYSTEM מקומי.

Running psexec as LOCAL SYSTEM

כדי להפעיל פקודת פתיחת פקודה כחשבון SYSTEM מקומי במחשב מרוחק, הוסף את שם המחשב להפניה כמו שמופיע למטה:

> psexec -s \\REMOTECOMPUTER cmd

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

מפתח נוסף של PsExec שימושי הוא -i. באופן ברירת מחדל, PsExec אינו מאפשר לפקודה שמופעלת מרחוק להציג חלונות על המחשב המרוחק. זה מועיל מכיוון שאם אתה מפעיל פקודות מרחוק, אין לך צורך בראות את המסך בכל מקרה.

אולם, אולי יש צורך להציג תוכניות למשתמשים שלך. אישית אינך תשתמש ביישום אך משתמש סופי יעשה זאת. במקרה זה, השתמש במפתח -i.

אולי יש צורך להציג חלון של Notepad על מחשב מרוחק. אין בעיה. הרץ את notepad.exe עם המפתח -i ו-PsExec יפתח את Notepad.

> psexec -i \\REMOTECOMPUTER notepad
Running psexec in interactive mode

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

בשימוש במתג -d עם -i יגיד ל-PsExec לא להמתין לתהליך המרוחק לסיום. במקום זאת, הוא ינתק ויחזיר שליטה אליך כמה שהתהליך המרוחק מבוצע.

הפניה לפלט

PsExec יסמך כל פלט שנשלח מהתהליך המרוחק להפעלת המשתמש המקומי שלך. לרוב, הפלט הזה יילך ישירות לקונסולת המקומית שלך. אבל אם תרצה להפנות אותו, תוכל לעשות זאת באמצעות אופרטורים רגילים להפניה.

לדוגמה, אם תרצה להריץ פקודה ולהשתיק את כל הפלט, תוכל להפנות את הפלט ואת השגיאות ל- null באמצעות ^> nul ^2^&1.

שימו לב שהתווים המיוחדים מופרדים בעזרת כובע ( ^).

תרומות השימוש של PsExec

לאחר שלמדתם איך להשתמש ב-PsExec, בוודאי תגלו מקרים שונים של שימוש מסוים. בסעיף זה, תלמדו כמה מקרי שימוש אמיתיים ודוגמאות לשימוש ב-PsExec.

להפעלת פקודת פקודה מרוחקת (psexec cmd)

אחת מהמקרים הנפוצים ביותר היא השגת הפעלת PsExec כפומברה אינטראקטיבית. PsExec אינו רק מפעיל פקודות מרחוק, אלא יכול גם לשלוח את פלט הפקודה חזרה לקונסולתך. כדי לעשות זאת, ניתן להשתמש בו ככלי Telnet נהדר (אם יש עדיין מי שמשתמש בזה) או אולי כהחלפה ל-Enter-PSSession של PowerShell.

כדי להפעיל פקודה מרחוק, יש לציין את שם המחשב המרוחק ולהפעיל את היישום cmd. Cmd הוא מפעיל הפקודות של Windows. מאחר ש-PsExec תומך בשימוש אינטראקטיבי, יש לו תיקרב להחזיר קיור זורם ולהציג הזמנה.

> psexec \\REMOTEPC cmd
Opening a command prompt on a remote computer

בנקודה זו, העולם בפנייך. תוכל להפעיל פקודות על המחשב המקומי שלך דרך פקודה "מקוננת" זו, והן יושגו על המחשב המרוחק.

כדי לצאת מהפקודה, הקלד exit. PsExec יעצור את תהליך ה-cmd במחשב המרוחק ויחזיר את המיקום למחשב המקומי.

אל תשתמש ב-Ctrl-C כדי לצאת מהפקודה אינטראקטיבית. יש להשתמש תמיד ב-exit. אם תשתמש ב-Ctrl-C, ההפעלה של psexec תישאר פעילה במחשב המרוחק.

התקנת תוכנה מרחוק

ניתן להשתמש ב-PsExec ככלי לפרסום תוכנה פשוט. אולי יש לך מתקן MSI שיש לך צורך להפעיל על מחשבים מרוחקים יותר מאחד, והוא נקרא setup.msi. יש להעתיק את המתקן למחשבים המרוחקים ולהפעיל אותו עם יישום ה-msiexec.exe עם מספר מציין.

למטה דוגמה לכיצד ניתן להשתמש ב-PsExec כדי להתקין תוכנה מרחוק. בדוגמה זו מתבצע העתקה של setup.msi אל המחשב המרוחק ולאחר מכן מופעל מותקן ה-MSI באופן אינטראקטיבי בחשבון SYSTEM.

> psexec.exe \\REMOTECOMPUTER –i –s "msiexec.exe /i setup.msi" -c setup.msi

מאשר את ה-EULA בלי המפתח /accepteula

כפי שצוין מראש, בפעם הראשונה ש-PsExec מופעל, עליכם לאשר EULA. ניתן להשתמש במפתח /accepteula אך ניתן גם "להקדים" את זה ברישום.

כאשר נפתח לראשונה, PsExec יוצר מפתח רישום בנתיב HKCU\Software\Sysinternals\PsExec. במקום מפתח רישום זה, הוא יוצר ערך ברישום בשם EulaAccepted עם ערך DWORD של 1.

באמצעות שיטת העדפות שלך לשנות את הרישום במחשבים מרוחקים, עליך פשוט ליצור את המפתח/הערך הזה במחשבים שברצונך להפעיל PsExec עליהם. לאחר היצירה, אין צורך להריץ /accepteula!

שילוב בין PowerShell ו-PsExec

לפני PowerShell, כל מה שהיה לנו היה PsExec. עכשיו, יש לנו אפשרויות. PowerShell יכול להחליף את PsExec במקרים רבים אך להשלים אותו במקרים אחרים.

בניית שמות מחשבים בעזרת PowerShell

במקום להשתמש ב-\\* כדי למצוא את כל המחשבים בדומיין, ניתן להשתמש ב-PowerShell במקום. על ידי שימוש ב-PowerShell, אפשר לא רק לבחור מחשבים מסוימים אלא גם אין צורך להשתמש בהתנהגות המסוכנת לגישה net view /all.

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

ניתן לראות מטה דוגמה לשימוש בפקודת ה־Get-AdComputer חלק מה־ActiveDirectory מודול PowerShell.

PS51> psexec "\\$((Get-AdComputer -Filter *).Name -join ',')" hostname

הפעלת גישה מרוחקת ל־PowerShell

אם יש לך מחשבים מרוחקים שתרצה להשתמש בגישה מרוחקת ב־PowerShell במקום PsExec, ניתן להשתמש ב־PsExec כדי לאפשר את זהם.

על ידי הרצת Enable-PSRemoting או קובץ ה־batch winrm.cmd על מחשבים מרוחקים, ניתן להפעיל במהירות גישה מרוחקת ל־PowerShell על מספר רב של מחשבים בו זמנית.

למטה ניתן לראות דוגמה לקריאת קובץ ה־batch winrm.cmd על מחשב מרוחק הרצה בחשבון SYSTEM. מכיוון שפלט מפקודה זו אינו נדרש, הוא מושתק באמצעות 2>&1> $null.

$computerName = 'REMOTECOMPUTER'
psexec "\\$Computername" -s c:\windows\system32\winrm.cmd quickconfig -quiet 2&>&1> $null 

הודעות שגיאה של PsExec

שווה לציין מראש שרוב הקודים שגיאה שתראו מחזרות PsExec הם מהתהליך המרוחק; לא מפקודת PsExec עצמה. אבל זה עוזר להבין את קודי השגיאה הללו ומה הם עשויים להצביע.

אם ברצונך לקבל הפנייה על כל קודי השגיאה של Windows, אני ממליץ לבדוק את רשימת הקודים הגורמים לכשלון המלאה זו.

למטה נמצאת רשימה של קודי שגיאה נפוצים שתיתקלו בהם כאשר משתמשים ב־PsExec.

Error Code Explanation
-2146232576 Typically returned by Windows Update when an error occurs.
0 Command executed successfully
1 Incorrect function. A problem happened. That’s about it.
1603 Fatal error during installation. This typically is returned by msiexec.
2 The system cannot find the file specified
4 The system cannot open the file.
5 Access is denied.
6 The handle is invalid.
6118 The list of servers for this workgroup is not currently available

המשוב שלך

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

קרדיטים

  • תודה למתיאס (הערות) על מספר משובים.

Source:
https://adamtheautomator.com/psexec/