דף הבית » איך ל » בית הספר חנון למד להשתמש Remoting ב PowerShell

    בית הספר חנון למד להשתמש Remoting ב PowerShell

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

    הקפד לקרוא את המאמרים הקודמים בסדרה:

    • למד כיצד להפוך את Windows עם PowerShell
    • ללמוד להשתמש Cmdlets ב PowerShell
    • ללמוד כיצד להשתמש אובייקטים ב PowerShell
    • הלמידה עיצוב, סינון והשוואה ב PowerShell

    ו להישאר מכוון עבור שאר הסדרה כל השבוע.

    מה זה Remoting?

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

    בואו נהיה טכניים

    בליבת PowerShell Remoting טמון שירות Windows יחיד, ניהול מרחוק של Windows, או שירות WinRM, כפי שהוא הגיע להיות ידוע. באמצעות WinRM, באפשרותך להגדיר תצורת הפעלה אחת או יותר (הנקראות גם נקודות קצה), שהן למעשה קבצים המכילים מידע על החוויה שברצונך לספק לאדם המתחבר למופע PowerShell המרוחק. באופן ספציפי יותר, ניתן להשתמש בקבצי תצורה של הפעלה כדי להגדיר מי יכול ומי לא יכול להתחבר למופע, מה cmdlets וסקריפטים הם יכולים לפעול, כמו גם מה הקשר אבטחה ההפעלה יש לפעול תחת. באמצעות שירות WinRM, אתה גם להגדיר "מאזינים", אשר להקשיב עבור בקשות PowerShell נכנסות. אלה "מאזינים" יכול להיות HTTP או HTTPS והוא יכול להיות מחויב לכתובת IP אחת במחשב שלך. כאשר אתה פותח חיבור PowerShell למכונה אחרת (טכנית זה נעשה באמצעות פרוטוקול WS-MAN, המבוסס על HTTP), החיבור נקשר לאחד "המאזינים". "המאזינים" אחראים על שליחת התנועה ליישום המשויך לקובץ התצורה המתאים של ההפעלה; היישום (בדרך כלל PowerShell אבל אתה יכול לקבל יישומים אחרים אירוח אם אתה רוצה) ואז מפעיל את הפקודה ומאכיל את התוצאות בחזרה דרך "מאזין" על פני הרשת ובחזרה אל המחשב שלך.

    תראה לי איך

    הדבר הראשון שאתה צריך לעשות הוא לאפשר Remoting במחשב שבו אתה רוצה להתחבר. ניתן לעשות זאת על ידי הפעלת הפעולות הבאות:

    הפעל- PSRemoting

    לאחר מכן עליך לענות כן לכל ההנחיות. בעת הפעלת Enable-PSRemoting, נעשים כמה שינויים במחשב:

    • שירות WinRM מתחיל לפעול.
    • שירות WinRM משתנה ממצב הפעלה ידני ל- Automatic.
    • זה יוצר המאזין HTTP כי הוא קשור לכל כרטיסי הרשת שלך.
    • הוא גם יוצר חריגה של חומת אש נכנסת עבור פרוטוקול WS-MAN.
    • כברירת מחדל, תצורות הפעלה מסוימות נוצרות

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

    הפעל- PSRemoting -SkipNetworkProfileCheck

    עם זאת, מומלץ לשנות את מיקום הרשת שלך.

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

    באמצעות מושב PowerShell

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

    Enter-PSSession -ComputerName "Darlah"

    הפקודה תקבל קידומת אשר מסמל את המכונה כי אתה מפעיל את cmdlets נגד.

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

    Get-ChildItem-נתיב C: \

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

    שימוש ב- Invoke-Command

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

    Invoke-Command -ComputerName דרלה, localhost -ScriptBlock Get-EventLog Application -Newest 2

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

    כאשר אתה משתמש ב- Invoke-Command, אין לך עוד את האובייקטים שאתה עשוי לצפות בצינור. אתה רואה, כדי PowerShell לקבל את המידע מהמכשיר המרוחק חזרה למכשיר שלך, הם צריכים קצת דרך המייצג את האובייקטים כי פקודה אתה רץ על יציאות המחשב מרחוק. בימים אלה נראה כי הדרך הנבחרת לייצג מבנה נתונים היררכי היא להשתמש ב- XML, כלומר כאשר אתה מוציא פקודה באמצעות Invoke-Command, התוצאות מסולקות לראשונה ל- XML ​​לפני שנשלח בחזרה למכשיר שלך. ברגע שהם חוזרים למכונה שלך, הם deserialized בחזרה לתוך אובייקט; את gotcha כאן היא שכאשר הם deserialized, כל השיטות, למעט שיטת ToString (), כי האובייקט היו מופשטים ממנו.

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

    שיעורי בית

    • קרא את הסודות של PowerShell Remoting ספר אלקטרוני על ידי דון ג 'ונס.