משתני סביבת PowerShell: חפירה עמוקה

שימוש ב־PowerShell להגדיר משתני סביבת Windows, לקרוא משתנים סביבתיים וליצור משתני סביבה חדשים פשוט כאשר אתה יודע את התקליף. התקליפים שתלמדו במאמר זה יעבדו למשתני הסביבה של Windows 10 וגם לכל לקוח/שרת של Windows אחרי Windows 7 SP1/Windows Server 2008.

PowerShell מספקת דרכים רבות שונות להתממשק עם משתני סביבת Windows מה־PSDrive של $env:, הרישום, וממחלקת ה־[System.Environment] של .NET. תלמד על כל שיטה כולל הבנת הטווח של משתני הסביבה במדריך השלב אחר השלב הזה.

הנחות

במהלך המאמר הזה, אני אשתמש ב־Windows PowerShell 5.1 ב־Windows 10. אך אם יש לך גרסת Windows PowerShell שאחרי v3 על Windows 7 SP1 או מאוחר יותר, הטכניקות שאני עומד להראות אותך כנראה יעבדו היטב.

מהם משתני הסביבה?

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

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

משתני סביבה נפוצים

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

Variable Usage
ClientName The name of the remote computer connected via a Remote Desktop session.
SessionName This helps to identify if the current Windows session is regarded by the operating system as running at the console. For console sessions SessionName will be ‘Console’. Enhanced Session connections to Hyper-V Virtual Machines do not report SessionName as ‘Console’, whereas Standard Sessions do.
ComputerName The name of the computer.
SystemRoot and Windir The path to the current Windows installation.
ProgramFiles and ProgramFiles(x86) The default locations for x64 and x86 programs.
ProgramW6432 The default location for programs, avoiding 32/64 bit redirection. This variable only applies for 32 bit processes running on a 64 bit platform. This means that you can use it to identify when a 32 bit instance of PowerShell is running on a 64 bit system.
UserDNSDomain The Fully Qualified Domain Name of the Active Directory domain that the current user logged on to. Only present for domain logons.
UserDomain The NETBIOS-style name of the domain that the current user logged on to. Can be a computer name if there’s no domain.
UserDomainRoamingProfile The location of the central copy of the roaming profile for the user, if any. Only present for domain logons.
UserName The name of the currently logged on user.
UserProfile The location of the profile of the current user on the local computer.

תחומי משתני הסביבה

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

היררכיה של תחום משתני הסביבה

כל אחד מה"שכבות" הללו או משלב או מתעלף אחד את השני. הם מוגדרים בהיררכיה כמו: מכונה –> משתמש –> תהליך עם כל משתנה בתחום מוגדר מחדש על ידי הורה התחום אם קיים משתנה בתחום ההורה.

לדוגמה, משתנה סביבתי נפוץ הוא TEMP. משתנה זה אחסון את נתיב התיקייה לתיקיית הזמנית המקומית של חלונות. משתנה זה מוגדר ל:

  • C:\WINDOWS\TEMP in the machine scope
  • C:\Users\<username>\AppData\Local\Temp in the user scope
  • C:\Users\<username>\AppData\Local\Temp in the process scope.

אם אין משתנה סביבתי TEMP מוגדר בתחום ה משתמש אז התוצאה הסופית תהיה C:\WINDOWS\TEMP.

סוגי תחומי משתני סביבת העבודה

יש שלושה סוגים שונים של תחומי משתני סביבת העבודה בווינדוס.

מכונה

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

משתמש

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

הערה: מיקרוסופט ממליצה שערכי קבועי הסביבה בטווחי המכונה והמשתמש לא יכילו יותר מ־2048 תווים.

תהליך

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

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

  • ALLUSERSPROFILE
  • APPDATA
  • COMPUTERNAME
  • HOMEDRIVE
  • HOMEPATH
  • LOCALAPPDATA
  • LOGONSERVER
  • PROMPT
  • PUBLIC
  • SESSION
  • SystemDrive
  • SystemRoot
  • USERDNSDOMAIN
  • USERDOMAIN
  • USERDOMAIN_ROAMINGPROFILE
  • USERNAME
  • USERPROFILE

קבועי סביבה ברגיסטר

קבועי הסביבה מאוחסנים בשני מקומות ברגיסטר, אחד עבור טווח המשתמש והשני עבור טווח המכונה.

אל תשתמש בריג'יסטר לניהול משתני סביבה

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

במקום לשנות ישירות את הריג'יסטר, אפשר להשתמש במחלקת .NET במקום זאת. מחלקת ה-.NET [System.Environment] יכולה לשנות משתני סביבה של מכונה ומשתמשובאה לידי ביטוי בניהול הריג'יסטר עבורך.

שינוי של משתני סביבה בריג'יסטר ישירות, גם אם אפשרי, אינו הגיוני. המחלקה של .NET מציעה גישה פשוטה יותר, נתמכת על ידי מיקרוסופט. תלמד על שימוש במחלקת .NET [System.Environment] מאוחר יותר במאמר זה.

מיקום הריג'יסטר של משתני סביבה ושאילתה

I hope you’ve been convinced to not modify the registry directly but if you’d like to take a peek at what’s in there, you can find all user environment variables in the HKEY_CURRENT_USER\Environment key. Machine-scoped environment variables are stored at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.

בתוך אחד מהמפתחות הללו יש ערכי ריג'יסטר מסוג REG_SZ או REG_EXPAND_SZ. ערכי REG_EXPAND_SZ מחזיקים משתני סביבה מוטבעים כחלק מערכת הערך שלהם. משתני סביבה אלו מתרחבים כאשר הערך נאסף.

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

עיין במשתנה הסביבה TEMP כפי שנראה למטה. הרץ את REG עם הפרמטר QUERY כדי לאחזר את ערך משתנה הסביבה TEMP.

> REG QUERY HKCU\Environment /V TEMP

HKEY_CURRENT_USER\Environment     
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp

לעיתים תראה משתני סביבה המוצגים מוקפים בסימני אחוז (%COMPUTERNAME%) כמו בדוגמה למעלה. זו הדרך הישנה להצגת משתני סביבה דרך cmd.exe וקבצי batch. ידעו ש-PowerShell אינה מזהה את הפורמט הזה.

הכלי REG מאפשר לנו לראות את הערך המקורי של ערך המקור של הרישום. סוג הערך הוא REG_EXPAND_SZ והערך מכיל את משתנה הסביבה %USERPROFILE%.

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

PS51> Get-ItemProperty -Path HKCU:\Environment -Name TEMP

TEMP         : C:\Users\<your username>\AppData\Local\Temp
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Environment
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
PSChildName  : Environment
PSDrive      : HKCU
PSProvider   : Microsoft.PowerShell.Core\Registry

צפה וקבע משתני סביבה של Windows דרך ממשק משתמש גרפי

כדי לראות תצוגה גרפית של משתני סביבת המשתמש והמערכת, הרץ SystemPropertiesAdvanced.exe מ-PowerShell, מפקודת פרומפט או מ-Windows Key+R כדי להציג את לשונית ה-System Properties Advanced. לחץ על הכפתור EnvironmentVariables, המודגש בתמונה למטה.

The System Properties dialog, Advanced tab

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

The Environment Variables dialog

עכשיו שיש לך הבנה של משתני הסביבה, בוא נעבור למה שבאת לכאן עבורו, ניהולם באמצעות PowerShell!

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

  • ה- PSDrive וה-Provider Env: – מבוסס על ההפעלה. מגדיר את ערכי משתני סביבת העבודה רק עבור ההפעלה הנוכחית של PowerShell.
  • משתנים $env: – מבוסס על ההפעלה. מגדיר את ערכי משתני סביבת העבודה רק עבור ההפעלה הנוכחית של PowerShell.
  • ה- Class .NET [System.Environment] – מאפשר לך לשמור משתני סביבת משתמש ושל מערכת באופן חותם על מסעיפים וטעינות מחדש.

ה- PSDrive וה-Provider Env:

אחת מדרכי הקריאה הטובות ביותר לקרוא למשתני סביבת העבודה היא רעיון של PowerShell שמוכר בשם מנהלי ההתקנים של PowerShell (PS drives). מנהל ההתקנים PS מאפשר לך לטפל במשתני סביבת העבודה כאילו הם מערכת קבצים דרך ההתקן Env:.

עבור להתקן Env:

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

PS51> cd Env:
PS51 Env:\>

## או

PS51> Set-Location Env:
PS Env:\>

השלמת טאב עם התקן Env:

ניתן להשתמש באותם פקודות שתשתמש בהן כדי לגשת למערכת הקבצים, כמו Get-Item ו־Get-ChildItem כדי לגשת למשתני סביבת העבודה. אך במקום מערכת הקבצים, אתה קורא את ה־Env: drive.

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

Env: tab completion – finding environment variables starting with the letter C

עכשיו נקפוץ לתוך כמה דוגמאות של איך ניתן להשתמש ב־Env: PS drive כדי לעבוד עם משתני סביבת העבודה.

רישום של משתני סביבת העבודה עם Env:

PS51> Get-Item -Path Env:
PS51> Get-Item -Path Env:USERNAME

רישום של משתני סביבת העבודה באמצעות כרטיסייה עם Env:

PS51> Get-Item -Path Env:user*

מציאת ערך של משתני סביבת העבודה עם Env:

תוצאות הפקודות הללו הן אובייקטים .NET של ציוני מפתח/ערך [System.Collections.DictionaryEntry]. אובייקטים אלה מחזיקים את שם משתני הסביבה במאפיין Name ואת הערך במאפיין Value.

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

PS51> (Get-Item -Path Env:computername).Value
MYCOMPUTERHOSTNAME

כאשר נתקלים במצבים בהם רק צריך להחזיר משתני סביבה מסוימים, ניתן להשתמש ב- cmdlets הסטנדרטיים של PowerShell כגון Select-Object ו- Where-Object כדי לבחור ולסנן את הפריטים שיוחזרו על ידי ספק ה- Env:.

בדוגמה שלמטה, רק המשתנה הסביבתי COMPUTERNAME מוחזר.

PS51> Get-ChildItem -Path Env: | Where-Object -Property Name -eq 'COMPUTERNAME'

כאפשרות אחרת, ניתן להשתמש ב- cmdlet של Get-Content. פקודה זו מחזירה אובייקט מסוג [String] המכיל את ערך המשתנה הסביבתי. האובייקט הזה פשוט יותר להתמודדות עימו מאשר אובייקט עם מאפייני Name ו- Value.

PS51> Get-Content -Path Env:\COMPUTERNAME

דוגמה: הכנסת ערכי סביבת משתמש לתוך מחרוזת

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

PS51> 'Computer Name is: {0}' -f (Get-Content -Path Env:COMPUTERNAME)
Computer Name is: MYCOMPUTER

יצירת משתנה סביבה (והגדרה) באמצעות Env:

ניתן ליצור משתנים סביבה חדשים באמצעות PowerShell באמצעות ה- cmdlet של New-Item. יש לספק את שם המשתנה הסביבתי בצורת Env:\<EnvVarName> לפרמטר של Name ואת ערך המשתנה הסביבתי לפרמטר של Value כפי שמוצג למטה.

PS51> New-Item -Path Env:\MYCOMPUTER -Value MY-WIN10-PC
Name                           Value
----                           -----
MYCOMPUTER                     MY-WIN10-PC

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

PS51> Set-Item -Path Env:testvariable -Value "Alpha"

העתקת משתנה סביבה עם Env:

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

למטה תראה שערך המשתנה COMPUTERNAME מועתק ל-MYCOMPUTER, וכתוצאה מכך מחליף את הערך הקיים שלו.

PS51> Get-Item -Path Env:\MYCOMPUTER

Name                           Value
----                           -----
MYCOMPUTER                     MY-WIN10-PC

PS51> Copy-Item -Path Env:\COMPUTERNAME -Destination Env:\MYCOMPUTER
PS51> Get-Item -Path Env:\MYCOMPUTER

Name                           Value
----                           -----
MYCOMPUTER                     WIN10-1903

הסרת משתנה סביבה עם Env:

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

  • להשתמש בפקודת Set-Item כדי להגדיר משתנה סביבה לערך ריק
PS51> Set-Item -Path Env:\MYCOMPUTER -Value ''
PS51> Remove-Item -Path Env:\MYCOMPUTER
  • להשתמש בפקודת Clear-Item.
PS51> Clear-Item -Path Env:\MYCOMPUTER

שינוי שם של משתנה סביבת העבודה עם Env:

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

השתמש ב־Rename-Item cmdlet כדי לשנות את שם משתנה הסביבה תוך שמירה על ערכו. למטה ניתן לראות כי ניתן לראות כי משתנה הסביבה MYCOMPUTER משויך מחדש ל־OLDCOMPUTER תוך שמירה על ערכו.

PS51> Rename-Item -Path Env:\MYCOMPUTER -NewName OLDCOMPUTER
PS51> Get-Item -Path OLDCOMPUTER
Name                           Value
----                           -----
OLDCOMPUTER                    WIN10-1903

$Env: Variables

לאחר שהתמסרת לנהיגת ה־Env: כדי להתייחס למשתני סביבה כקבצים, בסעיף זה אנו מראים כיצד להתייחס אליהם כמשתנים. דרך נוספת לנהל משתני סביבה במהלך ההפעלה היא באמצעות ה־PowerShell Expression Parser. התכונה הזו מאפשרת לך להשתמש בטווח ה־$Env: כדי לגשת אל משתני הסביבה.

קבלת משתנה סביבה עם $Env:

באמצעות הטווח $Env, אפשר להתייחס ישירות אל משתני הסביבה מבלי להשתמש בפקודה כמו Get-Item, כפי שמודגם למטה.

PS51> $env:computername

שיטה זו נותנת לך אפשרות להכניס משתני סביבה לתוך מחרוזות כמו שמוצג למטה:

PS51> "The Computer Name is {0}" -f $env:computername
The Computer Name is WIN10-1809
PS51> "The Computer Name is $env:computername"
The Computer Name is WIN10-1809

הגדרת או יצירת משתנה סביבה עם $Env:

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

PS51> $env:testvariable = "Alpha"

השתמש בתחביר += כדי להוסיף לערך קיים, במקום לדרוס אותו.

PS51> $env:testvariable = "Alpha"
PS51> $env:testvariable += ",Beta"

PS51> $env:testvariable
Alpha,Beta

הסרת משתנה סביבה עם $Env:

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

PS51> $env:testvariable = ''

שימוש במחלקת .NET [System.Environment]

מחלקת .NET [System.Environment] מציעה שיטות לקבלת והגדרת משתני סביבת עבודה גם. זהו הדרך היחידה לגישה ישירה לסביבת העבודה השונות ולהגדרת משתני סביבה השורדים בין הסשנים של PowerShell.

בכל הדוגמאות הבאות, במידה ולא צוין טווח, הננו מניחים טווח תהליך.

בעת השימוש ב־[System.Environment], תשתמש בכמה שיטות של מחלקת .NET סטטיות. אין צורך להבין מהו שיטת סטטית. עליך רק להבין שכדי להשתמש בכל אחת מהטכניקות שאתה עומד ללמוד, עליך תחילה להתייחס למחלקה ( [System.Environment]) ולאחר מכן לשתי נקודותיים ( ::) ואז לשיטה.

רישום של משתני סביבת העבודה עם [System.Environment]

אם ברצונך לראות את כל משתני הסביבה בטווח מסוים, תשתמש בשיטת GetEnvironmentVariables. שיטה זו מחזירה את כל משתני הסביבה לפי הטווח שצוין כארגומנט של השיטה (בסוגריים).

Listing environment variables with GetEnvironmentVariable in each scope
PS51> [System.Environment]::GetEnvironmentVariables('User') PS51> [System.Environment]::GetEnvironmentVariables('Machine') PS51> [System.Environment]::GetEnvironmentVariables('Process') # אותו דבר כמו בתהליך PS51> [System.Environment]::GetEnvironmentVariables()

קבלת משתנים יחידים של סביבת העבודה עם [System.Environment]

אם נדרש למצוא משתנה סביבת עבודה מסוים, ניתן לעשות זאת בשני דרכים שונות.

  • GetEnvironmentVariables().<שם משתנה> – לא מומלץ
  • GetEnvironmentVariable('<שם משתנה>','<תחום>')

GetEnvironmentVariables()

באמצעות שיטת GetEnvironmentVariables(), אתה משתמש בתיוגי נקודה להפניה לערך. סגור את ההפניה למחלקת [System.Environment] ולקריאה של השיטה הסטטית בסוגריים, ואז המשך עם נקודה ושם המשתנה הסביבתי כמו בדוגמה הבאה:

PS51> ([System.Environment]::GetEnvironmentVariables()).APPDATA

שים לב שכאשר אתה מפנה למשתנים סביבתיים בדרך זו, עליך לוודא שאתה מתאים לרישיות האותיות! בדוגמה למעלה, נסה לקרוא למשתנה APPDATA באמצעות appdata. השתמש ב- GetEnvironmentVariable() במקום זאת.

GetEnvironmentVariable()

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

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

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','User')
# ריק

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','Machine')
# ריק

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','Process')  WIN10-1903

# זהה לתהליך
PS51> [System.Environment]::GetEnvironmentVariable('ComputerName')
WIN10-1903

הגדרת משתנה סביבתי עם [System.Environment]

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

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

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','User')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','Process')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','Machine')

 # זהה לקצובת התהליך
PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha')

הערה: קריאה לשיטת SetEnvironmentVariable עם שם משתנה או ערך של 32767 תווים ומעלה עשויה לגרום לחריגה להופיע.

הסרת משתנה סביבתי עם [System.Environment]

השתמש בשיטת SetEnvironmentVariable() כדי להסיר משתנה סביבתי עבור הקצובה הנתונה על ידי הגדרת הערך שלו למחרוזת ריקה.

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'User')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'Process')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'Machine')

# זהה לתהליך
PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '')

משתנים סביבתיים שימושיים ב- PowerShell

כמו הרבה יישומי Windows אחרים, יש ל-PowerShell משתנים סביבתיים משל עצמו. שני משתנים סביבתיים שימושיים לדעתך הם PSExecutionPolicyPreference ו־PSModulePath.

PSExecutionPolicyPreference

המשתנה הסביבתי PSExecutionPolicyPreference אוחסן את מדיניות הביצוע הנוכחית של PowerShell. הוא נוצר אם מדיניות ביצוע ספציפית להקצאה נקבעת על ידי:

  • הרצת פקודת Set-ExecutionPolicy עם פרמטר Scope של Process
  • הרצת התוכנית powershell.exe להתחלת הסשן, באמצעות פרמטר שורת הפקודה ExecutionPolicy להגדיר מדיניות לסשן.

PSModulePath

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

PS51> $env:PSModulePath
C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

טיפ מהיר: פצל כל תיקייה כדי לקבל מערך מחרוזות כדי לעבד כל נתיב בנפרד באמצעות $env:PSModulePath.split(';')

סיכום

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

קריאה נוספת

Source:
https://adamtheautomator.com/powershell-environment-variables/