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

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

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

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

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

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

    רקע

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

    Start-Job -Name GetFileList -Scriptblock Get-ChildItem C: \ -Recurse

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

    כאשר אתה בועט את העבודה החדשה, PowerShell יוצר אובייקט עבודה חדש המייצג את העבודה. באפשרותך לקבל רשימה של כל העבודות בכל עת על ידי הפעלת ה- Get-Job-cmdlet.

    אובייקטים העבודה לספר לך על מצב של מקומות עבודה. לדוגמה, בצילום המסך הנ"ל אנו יכולים לראות שיש לנו BackgroundJob שנקרא GetFileList שעדיין פועל, אך הוא כבר החל להחזיר נתונים. אם בשלב כלשהו אתה מחליט כי העבודה כבר פועל זמן רב מדי, אתה יכול בקלות לעצור את זה על ידי צנרת אותו עצור- Job.

    Get-Job-Name GetFileList | סטופ-איוב

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

    Get-Job-Name GetFileList | קבלה - עבודה - שמירה

    לאחר שתסיים עם עבודה, מומלץ להתאמץ. כדי להסיר את העבודה, פשוט הציפו אותה אל ה- cmdlet 'הסר עבודה'.

    Get-Job-Name GetFileList | הסר עבודה

    פעולה זו תסיר אותה מרשימת המשרות המוחזרות על ידי Get-Job.

    משרות מרוחקות

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

    Invoke-Command -ComputerName פלאש, צפע -מנהל המערכת -ScriptBlock gci -AsJob

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

    הממ, נראה כאילו זה נכשל. זה מביא אותי על gotcha הראשון שלי עם עבודות. כאשר אתה יוצר עבודה חדשה מכל סוג שהוא ב- PowerShell, היא יוצרת עבודה של הורה אחד בנוסף לעבודה של ילד אחד עבור כל מחשב שבו אתה מנהל את העבודה. בעת שימוש ב- cmdlet Get-Job, הוא מציג רק את משימות האב, ומאפיין המדינה הוא תרחיש המקרה הגרוע ביותר, כלומר, גם אם הפקודה נכשלה רק לפעול באחד ממאה מחשבים, מצב משרות האב יגיד נכשל. כדי לראות רשימה של עבודות של ילדים עליך להשתמש בפרמטר includeChildJob.

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

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

    Get-Job -Id 3 | מקבל-עבודה -שומר-מחשב צפע

    לחלופין, אתה יכול לקבל את התוצאות של עבודה ספציפית הילד באמצעות מזהה העבודה שלה.

    Get-Job -Id 3 -IncludeChildJob

    Get-Job -Id 5 | קבלה - עבודה - שמירה

    עבוד

    עבודות WMI הן הרבה יותר כמו משרות מרוחקות, המחייבות רק את הפרמטר -AsJob שיתווסף ל- cmdlet Get-WmiObject.

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

    משרות מתוזמנות

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

    הרשמה- ScheduledJob -Name GetEventLogs -ScriptBlock Get-EventLog -LogName Security -Newest 100 - טריגר (New-JobTrigger -יום-בשעה 5) -משולבתתוכנית (New-ScheduledJobOption -RunElevated)

    יש די הרבה פקודה, אז בואו נשבור אותו.

    • ראשית, אנו נותנים עבודה מתוזמנת שלנו בשם GetEventLogs.
    • לאחר מכן אנו אומרים כי כאשר מופעלים, אנחנו רוצים את זה כדי להפעיל את התוכן של בלוק סקריפט שצוין, אשר בעצם מקבל את החדש 100 רשומות של יומן האירועים אבטחה.
    • לאחר מכן, אנו מציינים גורם. מאז פרמטר ההדק לוקח אובייקט ההדק כקלט, השתמשנו הפקודה הורה כדי ליצור ההדק כי ילך כל יום בשעה 17:00.
    • מאחר שאנו עוסקים ביומן האירועים, עלינו לפעול כמנהל, אשר אנו יכולים לציין על-ידי יצירת אובייקט חדש של ScheduledJobOption והעברתו לפרמטר ScheduledJobOption.

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

    קבל- ScheduledJob

    זה כל מה שיש.