של PowerShell' משתנים אוטומטיים ' חיוניים לפעילויות ניהול מערכת, אוטומציה וסקריפטים. משתנים אלו מובנים על ידי זמן הריצה של PowerShell ומשמשים כמצייני מקום לאחסון ולהתייחסות למידע ספציפי במהלך ביצוע סקריפט או פקודה. הבנה וניצול יעיל של משתנים אוטומטיים אלה יכולים לשפר מאוד את היעילות והפונקציונליות של סקריפטים של PowerShell.
מאמר זה נועד לחקור את המושג 'משתנים אוטומטיים' ב- PowerShell, את משמעותם וכיצד ניתן למנף אותם בתרחישים שונים.
מהם משתנים אוטומטיים ב- PowerShell?
כדי להתחיל, בואו נתעמק בהגדרה של ' משתנים אוטומטיים '. משתנים אלו מוגדרים מראש והם נוצרים באופן אוטומטי על ידי PowerShell במהלך ביצוע סקריפט. אלה משרתים מטרות שונות, כולל מתן מידע על המערכת, ארגומנטים של שורת הפקודה, פרטים הקשורים לסקריפט ועוד הרבה יותר.
PowerShell מציעה מספר 'משתנים אוטומטיים' וכל אחד מהם משרת מטרה נפרדת בביצוע סקריפט. משתנים אלה הם כדלקמן:
1. $PSVersionTable
אחד המשתנים האוטומטיים הבסיסיים ב- PowerShell הוא ' $PSVersionTable '. משתנה זה מאפשר למפתחי סקריפטים לוודא את הגרסה של PowerShell בשימוש, דבר שיכול להיות מכריע כאשר שוקלים את התאימות והזמינות של תכונות ופונקציות מסוימות.
המאפיינים הבאים משויכים למשתנה זה:
גרסת PS: מחזירה את מספר הגרסה של PowerShell.
מהדורת PSE: עבור PowerShell 4 ואילך, כמו גם PowerShell 5.1 בגרסאות Windows עם כל התכונות, למאפיין זה יש את הערך 'Desktop'. למאפיין זה יש את הערך של Core עבור PowerShell 6 ואילך, כמו גם Windows PowerShell 5.1 עבור מהדורות עם טביעת רגל נמוכה כמו Windows Nano Server או Windows IoT.
GitCommitId: שולף את מזהה התחייבות GitHub של קבצי המקור.
אתה: רושם מידע על מערכת המחשב שבה משתמשת PowerShell.
פּלַטפוֹרמָה: מחזיר את הפלטפורמה התומכת של מערכת ההפעלה. ל-Unix יש ערך ב-Linux וב-macOS. בדוק את $IsMacOs ו-$IsLinux.
גרסאות תואמות PS: מוחזרות גרסאות PowerShell התואמות לגרסה הנוכחית.
PSRemotingProtocolVersion: מחזירה את מספר הגרסה עבור פרוטוקול הניהול המרוחק של PowerShell.
גרסת סדרה: מחזירה את גרסת שיטת הסידרה.
WSManStackVersion: מחזירה את מספר הגרסה של מחסנית WS-Management.
$ PSVersionTable
2. $Args
משתנה אוטומטי חיוני נוסף ב- PowerShell הוא ' $Args ', המכיל מערך של ארגומנטים של שורת הפקודה המועברים לסקריפט או לפונקציה. משתנה זה מאפשר למפתחים לעבד ולתפעל את הארגומנטים המסופקים באופן דינמי בתוך הסקריפטים שלהם.
בעת הגדרת פונקציה, אתה יכול להשתמש במילת המפתח 'param' כדי להכריז על הפרמטרים או שאתה יכול להוסיף רשימה מופרדת בפסיקים של פרמטרים בסוגריים לאחר שם הפונקציה. המשתנה '$Args' של פעולת אירוע מאחסן אובייקטים המשמשים כמצייני מיקום עבור פרמטרי האירוע של האירוע בטיפול:
לכל אחד ( $ארג ב $Args ) {כתיבה-מארחת $ארג
}
3. $MyInvocation
ה ' $MyInvocation המשתנה נותן נתוני רקע חיוניים לגבי הסקריפט או ההליך הפועלים כעת. הוא מציע מאפיינים כגון שם הסקריפט, מספר שורת הסקריפט והאם הסקריפט מופעל באופן אינטראקטיבי או לא אינטראקטיבי. מאפיינים אלה עוזרים למפתחי סקריפטים ליישם לוגיקה מסועפת, להגדיר מנגנוני טיפול בשגיאות או ליצור רישום ודיווח משמעותיים:
$ MyInvocation
4. $שגיאה
משתנה אוטומטי פחות מוכר ' $שגיאה ', לוכד ביעילות כל הודעת שגיאה או חריגים המתרחשים במהלך ביצוע הסקריפט. ניתן לגשת ל-'$Error' כדי לאחזר פרטי שגיאה ספציפיים כגון הודעות חריג, עקבות מחסנית או קודי שגיאה, מה שמאפשר ניתוח וניפוי באגים מפורט.
השגיאה האחרונה מיוצגת על ידי אובייקט השגיאה הראשון במערך ' $Error[0] '. אתה יכול להשתמש באפשרות הנפוצה של ErrorAction עם הערך 'התעלם' כדי למנוע מהשגיאות להתווסף למערך '$Error'.
נניח שהקלדנו פקודה מדויקת:
ip [ onfig
כעת, אם נזין את ה-cmdlet '$Error':
$ שְׁגִיאָה
5. $PSCmdlet
בעבודה עם מודולי PowerShell, המשתנה האוטומטי ' $PSCmdlet ' נכנס לתוקף. משתנה זה מספק גישה למופע הנוכחי של ה-cmdlet או הפונקציה המופעלת, ומאפשר אינטראקציה ישירה עם המאפיינים והשיטות שלו.
באמצעות '$PSCmdlet', מפתחי סקריפטים מתקדמים יכולים לכוונן ולשפר את ההתנהגות של מודולים על ידי הרחבה או שינוי של הפונקציות המובנות. אתה יכול להשתמש בתכונות ובשיטות של האובייקט ב-cmdlet או בקוד הפונקציה שלך בתגובה לקריטריונים של שימוש:
פוּנקצִיָה typeof-psCmdlet {[ cmdletBinding ( ) ] param ( )
הֵד 'סוג של ` $psCmdlet הוא $($psCmdlet.GetType() .שם מלא)'
}
typeof-psCmdlet
בנוסף למשתנים שהוזכרו לעיל, PowerShell מקיפה משתנים אוטומטיים כמו $HOME, $PROFILE, $PWD ועוד רבים, המשרתים מטרות שונות, כמו גישה לקלט, שגיאות מעקב, אחזור מידע סביבתי, ניהול פרמטרים ועוד ועוד. משתנים אלה מפורטים להלן:
משתנים אוטומטיים | תיאור |
$$ | מחזיק את האסימון האחרון בשורה הקודמת שהתקבל על ידי הפעלת PowerShell. |
$? | מאחסן את מצב הביצוע של הפקודה האחרונה. |
$^ | מכיל את האסימון הראשון של השורה האחרונה שהתקבלה על ידי ההפעלה. |
$_ | מייצג את האובייקט הנוכחי בצינור. |
$ConsoleFileName | מכיל את הנתיב של קובץ המסוף (.psc1) בשימוש האחרון בהפעלה. |
$EnabledExperimentalFeatures | מכיל רשימה של תכונות הניסוי המופעלות. |
$Event | מכיל אובייקט 'PSEventArgs' המייצג את האירוע המעובד. |
$EventArgs | מכיל את ארגומנט האירוע הראשון של האירוע המעובד. |
$EventSubscriber | מייצג את מנוי האירוע של האירוע בעיבוד. |
$ExecutionContext | מייצג את הקשר הביצוע של מארח PowerShell. |
$false | מייצג את הערך הבוליאני 'שקר'. |
$foreach | מכיל את המונה של לולאה 'לכל אחד'. |
$HOME | מכיל את הנתיב המלא של ספריית הבית של המשתמש. |
$מארח | מייצג את היישום המארח הנוכחי עבור PowerShell. |
קלט $ | משמש כמונה עבור כל הקלט המועבר לפונקציה או סקריפט. |
$IsCoreCLR | מציין אם ההפעלה פועלת ב-.NET Core Runtime (CoreCLR). |
$IsLinux | מציין אם ההפעלה פועלת על מערכת הפעלה לינוקס. |
$IsMacOS | מציין אם ההפעלה פועלת על מערכת הפעלה MacOS. |
$IsWindows | מזהה אם ההפעלה פועלת על מערכת הפעלה Windows. |
$LASTEXITCODE | מאחסן את קוד היציאה של התוכנית המקורית האחרונה או סקריפט PowerShell. |
$Matches | מכיל מחרוזות תואמות מהאופרטורים '-match' ו-'-notmatch'. |
$NestedPromptLevel | עוקב אחר רמת ההנחיה הנוכחית בפקודות מקוננות או בתרחישי ניפוי באגים. |
$null | מייצג ערך ריק או ריק. |
$PID | מכיל את מזהה התהליך (PID) של הפעלת PowerShell. |
$PROFILE | מכיל את הנתיב המלא של פרופיל PowerShell עבור המשתמש הנוכחי והיישום המארח. |
$PSBoundParameters | מכיל מילון של פרמטרים שהועברו לסקריפט או פונקציה והערכים שלהם. |
$PSCommandPath | מכיל את הנתיב ואת שם הקובץ המלאים של הסקריפט שמתבצע. |
$PSCulture | משקף את התרבות של מרחב הריצה הנוכחי של PowerShell. |
$PSEdition | מכיל את המידע על מהדורת PowerShell. |
$PSHOME | מכיל את הנתיב המלא של ספריית ההתקנה של PowerShell. |
$PSItem | זהה ל-$_, מייצג את האובייקט הנוכחי בצינור. |
$PSScriptRoot | מכיל את הנתיב המלא של ספריית האב של הסקריפט המבצע. |
$PSSenderInfo | מכיל מידע על המשתמש שהתחיל את ה-PSSession. |
$PSUICulture | משקף את תרבות ממשק המשתמש (UI) המוגדרת במערכת ההפעלה. |
$PWD | מייצג את ספריית העבודה הנוכחית של הפעלת PowerShell. |
$Sender | מכיל את האובייקט שיצר אירוע. |
$ShellId | מכיל את המזהה של המעטפת הנוכחית. |
$StackTrace | מאחסן את מעקב הערימה עבור השגיאה האחרונה. |
$מתג | מכיל את המונה של הצהרת 'Switch'. |
$זה | מתייחס למופע של מחלקה בבלוקים של סקריפט שמרחיבים מחלקות. |
$נכון | מייצג את הערך הבוליאני 'True'. |
ניתן למצוא את כל 'המשתנים האוטומטיים' ב- PowerShell על ידי הפעלת הפקודה הבאה:
Get-Variable
סיכום
' משתנים אוטומטיים 'מהווים את עמוד השדרה של סקריפטים של PowerShell, ומאפשרים למפתחים לקבל מידע על המערכת, ארגומנטים של שורת הפקודה, הקשר של ביצוע סקריפט ועוד. על ידי רתימת משתנים אוטומטיים כגון '$PSVersionTable', '$Args', '$MyInvocation', '$Error' ואחרים, מפתחי סקריפטים של PowerShell יכולים ליצור נוהלי ניהול מערכת יעילים.