6Sep
אחת התכונות הטובות ביותר של 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 במחשב שבו אתה רוצה להתחבר.ניתן לעשות זאת על ידי הפעלת הפעולות הבאות:
Enable-PSRemoting
יהיה עליך לענות על כן לכל ההנחיות.בעת הפעלת Enable-PSRemoting, נעשים כמה שינויים במחשב:
- שירות WinRM מופעל.
- שירות WinRM משתנה ממצב אתחול ידני לאוטומטי.
- זה יוצר מאזין HTTP המחויב לכל כרטיסי הרשת שלך.
- הוא גם יוצר חריגה של חומת אש נכנסת עבור פרוטוקול WS-MAN.
- כמה תצורות ברירת מחדל של הפעלה נוצרות
אם אתה מפעיל את Windows 7 ומיקום כרטיס הרשת שלך מוגדר לציבורי, הפעלת PowerShell Remoting תיכשל.כדי לתקן זאת, עבור אל מיקום הרשת בית או עבודה.לחלופין, באפשרותך לדלג על בדיקת הרשת באמצעות האפשרויות הבאות:
Enable-PSRemoting -SkipNetworkProfileCheck
עם זאת, מומלץ לשנות את מיקום הרשת שלך.
קיימות שתי דרכים לחיבור למחשב אחר באמצעות PowerShell.יש את אחד לאחד שיטה, אשר דומה מאוד לשימוש SSH, ולאחר מכן יש שיטה אחת לרבים.
באמצעות הפעלה PowerShell
הדרך הראשונה להתחבר למכשיר מרוחק באמצעות PowerShell משתמשת במשהו הנקרא PowerShell Session.פשוט לשים מושב מאפשר לך להפעיל פקודות על המחשב המרוחק בצורה אינטראקטיבית הרבה אותו הדבר היית על המחשב שלך.כדי לפתוח מושב פשוט להקליד את הדברים הבאים:
Enter-PSSession -ComputerName "Darlah"
הפקודה תקבל קידומת אשר מסמל את המכונה שאתה מפעיל את cmdlets נגד.
מכאן אתה באמת יכול להתייחס הפקודה כאילו אתה יושב ליד המחשב המרוחק.לדוגמה, אם ברצונך לראות את כל הקבצים בכונן C: \ באפשרותך לבצע פעולה פשוטה:
Get-ChildItem -Path C: \
אם אתה בא מרקע לינוקס, אתה יכול לחשוב על שימוש בשיטה זו אחת של remoting כמו חלופה PowerShell ל SSH.
שימוש ב- Invoke-Command
הדרך השנייה שבה ניתן להשתמש ב- PowerShell במחשב מרוחק היא באמצעות Invoke-Command.היתרון באמצעות Invoke-Command נובע מהעובדה שאתה יכול לבצע את אותה הפקודה על מספר מכונות בו זמנית.כפי שאתה יכול לדמיין, זה שימושי במיוחד כאשר אתה רוצה לעשות משהו כמו לאסוף יומני אירועים מהשרתים שלך.פקודה- Invoke עוקבת אחר התחביר הבא:
Invoke-Command -ComputerName Darlah, 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 ספר אלקטרוני על ידי דון ג 'ונס.