
Get-ChildItem Env: (או dir שהוא alias שלו) ולראות אותם כמו קבצים, בדיוק כמו ב-Registry. אפשר גם להיכנס אליו עם Set-Location.$env: הדרך הנוחה לקריאה, למשל $env:Path. מקש Tab עובר בין שמות המשתנים.$env:Path -split ';' מציג את התיקיות שורה אחרי שורה, ורואים איפה המערכת מחפשת תוכנות כמו calc.$env:AAA = 111, או יצירה דרך הכונן. שניהם נעלמים כשסוגרים את החלון.[Environment]::SetEnvironmentVariable('BBB','222','Machine') לכל המשתמשים, או 'User' למשתמש הנוכחי. ברמת Machine נדרשת הרצה כאדמיניסטרטור.$null. Remove-Item מוחק רק בסשן הנוכחי, והמשתנה חוזר אחרי פתיחה מחדש.$env:Path += ';התיקייה' עובד לסשן בלבד. לשמירה קבועה בונים משתנה זמני, למשל $newPath, ומכניסים אותו עם SetEnvironmentVariable ברמת Machine.הטקסט המלא של הדקות הראשונות בהרצאה «משתנה סביבה - Environment Variables ב-PowerShell» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הזאת אנחנו נדבר על משתני סביבה על ידי פאוורשל אנחנו פותחים עכשיו את הפאוורשל שלנו ואנחנו רוצים לראות איזה משתני סביבה יש לנו ואיך עובדים איתם אז בפאוורשל הם עשו שמשתני סביבה יהיו דרך פי-אס פרוביידר מה זה פי-אס פרוביידר זה ספק של כוננים פאוורשל פרוביידר
כמו כונן C ו-D שאני יכול לגשת אליהם בצורה שבה אני עושה דיר על כונן C, אני יכול לעשות אותו דבר על משתני סביבה. שימו לב איזה מדהים זה. אז הם בצורה הזאת מנגישים לנו את משתני הסביבה בצורת כמו כונן.
דרך אגב, הם עושים אותו דבר ל-registry. אני יכול לעשות דיר לתוך רג'יסטרי. אתם יודעים איך דרך אגב עושים דיר? אליאס דיר. אני יכול לראות שדיר זה למעשה אליאס קיצור לפקודה get child item.
אני יכול לעשות get child item נניח על רג'יסטרי בואו נעשה שנייה על קונן סי שתראו על קונן סי זה עובד ואני יכול לעשות את זה על hk current user על רג'יסטרי ואני עכשיו רואה את הרג'יסטרי של המחשב שלי בצורת התיקיות וקבצים אז אותו דבר כמו שאני רואה את רג'יסטרי בצורת תיקיות וקבצים כך גם אני יכול לעשות על environment אתם רואים פה כתוב environment אז אני יכול
לגשת למשתני סביבה כאילו זה קונן C והנה אני רואה את כל מה שיש לנו במשתני סביבה בפאורשל אז אנחנו רואים את האפליקיישן דאטה איפה אפשר לשמור את המידע של האפליקציה אנחנו רואים פה איזה מערכת הפעלה הזאת ודרך איזה שרת עשיתי לוגין שזה פחות מעניין HomePath, איפה תיקיית הבית,
איפה הפרופיל של המשתמש, תיקיית הבית שלו שאפשר לשמור שם דברים ויש לו אישור לשמור גם אם הוא יוזר פשוט. ה-Path שאני כל כך כל כך אוהב אותו. אז עכשיו אנחנו יכולים לגשת לזה בצורה כזאת, אבל זה לא הכי נוח.
דרך אגב, אנחנו יכולים ממש להיכנס פנימה. אנחנו יכולים לעשות Set Location וכמו ש-Location וממש לעבור אליו כמו שעוברים לכונן C, ותראו איפה נהיינו, נהיינו בתוך ה-ENV במקום בכונן C.
ועכשיו דרך אגב דיר גם יעבוד. אתם רואים, אני עושה דיר בתוך כונן של Environment. כאילו נותנים לי ממש הרגשה כאילו אני בתוך הכונן, ככה קל לי לעבוד, אבל זה עדיין לא הכי קל בעולם לעבוד ככה.
יש לנו משתנה-ENV. משתנה-ENV נותן לנו אותה תוצאה, אז במקום לרשום את כל הסיפור הזה של Get Child Item מתוך Environment, אני יכול לעשות בשיטה אחרת וזה על ידי משתנה עזר, נניח נגיד לו שיראה לנו את ה-Path שזה המשתנה הכי חשוב כי יש בו רשימת תיקיות שצריך לחפש בפנים והנה אני מקבל את הערך של המשתנה Path שימו לב אני יכול ללחוץ Tab ולעבור בין
כולם הנה תראו Computer Name שם של המחשב שלי אני יכול לעשות P-Path אתם רואים אני עובר בין כל מה שעם אות P כי כתבתי P ולחצתי Tab אז הנה Path עכשיו הדבר היחיד שלא נוח לי לראות את הפאת ככה אז אני אעשה לו ספליט תפצה לי אותם לשורות נפרדות לפי נקודה פסיק ואז הוא ייקח את זה ויכתוב לי את אותו השורה מפוצלת להרבה שורות
לפי נקודת פסיק וזה ממש נוח לראות איפה אנחנו מחפשים תוכנה זאת אומרת בזכות המשתנה פאת הזה אם אני כותב קאלק הוא יודע איפה לחפש את הקאלק הזה ולא משנה באיזה תיקייה אני נמצא.
אמנם בתיקייה הזאת יש באמת קאלק, אתם רואים קאלק נמצא בתיקייה הזאת, אבל אם אני אצא אל הקוננסי הראשי עדיין הקאלק יעבוד לי, וזה בזכות המשתנה סביבה path שיודע איפה לחפש את התוכנות.
מה קורה אם אני רוצה להוסיף משתנה משלי, ליצור משתנה משלי? אז אני יכול לעשות את זה בצורה פשוטה, אני כותב env.2 ונותן לזה שם, נעשה aaa שווה 111 ואחרי שעשיתי את זה יש לי nv אני עושה נקודתיים aaa אתם רואים הוא נהיה פה aaa וגם אם נעשה בשיטה פחות נוחה בשיטה ישנה בוא נעשה בשיטה ישנה get child item שזה מודיר תראה לי את הקבצים וניתן לו path שזה environment נקודתיים סלאש אנחנו
מסתכלים בזה כמו כונן אנחנו רואים שזה כאן קיים. אז יש לנו שתי שיטות לגשת, אחת על ידי משתנה environment, השנייה כמו כונן רגיל. אבל יש בעיה שאם אני אסגור את זה ואני אפתח מחדש ואני אעשה get child item על env, אתם תראו שאין לי יותר aaa.
למה? כי זה per session, per process. אם אני רוצה לעשות את זה קבוע לכל התוכנות במחשב, אז אני יכול לגשת לתוך המבנה של המחשב, ל-My Computer Properties Advanced, Environment Variable ולהוסיף פה את המשתנה אם זה לכל היוזרים או רק ליוזר ספציפי להוסיף אותו כאן. ללחוץ New ולעשות AAA שווה 111.
אני יכול לעשות את זה הנה הוא נהיה פה ואחרי שהוא נהיה פה הוא יהיה זמין לכולם וראינו את זה כשעשינו את החבר'ה של DOS. אבל אם אני רוצה לעשות את זה על ידי פקודות של פאור של איך אני עושה את זה שימו לב אתם רואים אם AA נהיה בסשן חדש, כן הופיע.
אבל אם אני לא רוצה לעשות את זה דרך ממשק גרפי, אם אני רוצה לעשות את אותה הפעולה דרך פקודות, מה קורה אם אני רוצה דרך פקודות לעשות את זה?
שימו לב שיש לנו פה, מחקנו את ה-AAA, זהו, הוא לא קיים יותר. אם אני עושה environment הוא לא קיים, מחקתי אותו. עכשיו אני רוצה לעשות את אותה הפעולה של הוספה לשמה רק מתוך שורת פקודה.
זאת אומרת שאני רוצה עכשיו מתוך שורת פקודה להוסיף לרשימה ה-E של הדברים הקבועים את המשתנה סביבה שלי. איך אני עושה את זה? קודם כל אנחנו רואים ש-Get Child Item בתוך ה-ENV לא נותן לי איי איי איי.
השמדנו אותו וזה לא נותן. עכשיו אני מראה לכם איך אפשר להוסיף אותו לרשימה ה-E על ידי הפקודה. ובשביל הדבר הזה אנחנו נשתמש ב-Dotnet.
אנחנו נפנה לאובייקט של .NET שעושים אותו בסוגריים באים environment ומפעילים פונקציה set environment variable ונעשה את ה-set environment variable לקבוע משתנה סביבה נקרא לו bbb הפעם נכניס לו ערך 222 ונכניס אותו לרמת מכונה זה אומר לכל היוזרים ברגע שאני מריץ את הפקודה
הזאת ה-request registry access is not allowed אסור לי לעשות את זה למה אסור לי לעשות את הפקודה הזאת כי אני לא עם הרשאות של אדמיניסטרטור בואו נסגור את זה, נפתח את ה-run as administrator כי צריך הרשאות של אדמיניסטרטור כדי לשנות לכולם.
הנה שינינו לכולם ועכשיו אנחנו נראה שבפרופרטיז ב-advanced environment variable הופיע פה bbb זה מה שרציתי. אני יכול גם להוסיף את זה לרמת user ספציפי שזה רמת user שלי.
שימו לב הפקודה הזאת מוסיפה ccc333 לרמת user ולא לרמת מחשב. זאת אומרת שכאן במשתנה סביבה ב-Environment