متغيرات بيئة PowerShell: دراسة متعمقة

باستخدام PowerShell لتعيين متغيرات بيئة Windows وقراءة متغيرات البيئة وإنشاء متغيرات بيئة جديدة سهل بمجرد معرفة الحيلة. ستعمل الحيل التي ستتعلمها في هذه المقالة لمتغيرات بيئة Windows 10 وأي عميل / خادم Windows بعد Windows 7 SP1 / Windows Server 2008.

يوفر PowerShell العديد من الطرق المختلفة للتفاعل مع متغيرات بيئة Windows من محرك الأقراص $env: ، والسجل ، وفئة .NET [System.Environment]. ستتعرف على كل طريقة بما في ذلك فهم نطاق متغيرات البيئة في هذا الدليل التفصيلي خطوة بخطوة.

افتراضات

طوال هذه المقالة ، سأستخدم Windows PowerShell 5.1 على Windows 10. ولكن إذا كان لديك أي إصدار من Windows PowerShell بعد v3 على Windows 7 SP1 أو بعد ذلك ، يجب أن تعمل التقنيات التي سأعرضها بشكل جيد.

ما هي متغيرات البيئة؟

تخزن متغيرات البيئة ، كما يوحي الاسم ، معلومات حول البيئة التي يتم استخدامها بواسطة Windows والتطبيقات. يمكن الوصول إلى متغيرات البيئة من التطبيقات الرسومية مثل مستكشف Windows ومحررات النص العادية مثل Notepad ، بالإضافة إلى cmd.exe و PowerShell.

يساعد استخدام متغيرات البيئة على تجنب إدخال المسارات الثابتة بشكل صريح ، أو أسماء المستخدمين أو أجهزة الكمبيوتر وغير ذلك الكثير في نصوص أو وحدات 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.

نطاقات المتغيرات البيئية

هناك ثلاثة نطاقات للمتغيرات البيئية. فكر في النطاقات كطبقات من المتغيرات تبني صورة كاملة. مجتمعة، توفر هذه “الطبقات” العديد من المتغيرات البيئية المختلفة لأي عملية تعمل في نظام التشغيل Windows.

التسلسل الهرمي لنطاقات المتغيرات البيئية

كل من هذه “الطبقات” إما تجمع أو تستبدل بعضها البعض. يتم تعريفها في تسلسل هرمي مثل: جهاز –> مستخدم –> عملية حيث يتم استبدال المتغير المحدد في النطاق الأعلى بالمتغير المحدد في النطاق الأدنى إذا كان هناك متغير في النطاق الأعلى.

على سبيل المثال، متغير البيئة الشائع هو TEMP. يقوم هذا المتغير بتخزين مسار المجلد إلى المجلد المؤقت المحلي في نظام التشغيل Windows. يتم تعيين هذا المتغير البيئي على:

  • 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.

أنواع نطاقات المتغيرات البيئية

هناك ثلاثة أنواع مختلفة لنطاقات المتغيرات البيئية في نظام التشغيل Windows.

جهاز

المتغيرات البيئية في نطاق الـ جهاز مرتبطة بنسخة نظام التشغيل الحالية. يمكن لأي حساب مستخدم قراءتها، ولكن يجب أن يتم تعيينها أو تغييرها أو حذفها بامتيازات مرتفعة.

المستخدم

ترتبط المتغيرات البيئية في نطاق المستخدم user مع المستخدم الذي يقوم بتشغيل العملية الحالية. تكتب متغيرات المستخدم المستخدم فوق المتغيرات ذات النطاق المحدد بالجهاز الجهاز- التي تحمل نفس الاسم.

ملاحظة: توصي Microsoft بأن تحتوي قيم المتغيرات البيئية ذات نطاق المستخدم والجهاز على أكثر من 2048 حرفًا.

العملية

المتغيرات البيئية في نطاق العملية العملية هي مزيج من نطاق الجهاز الجهاز والمستخدم المستخدم ، جنبًا إلى جنب مع بعض المتغيرات التي ينشئها Windows بشكل ديناميكي.

أدناه قائمة بالمتغيرات البيئية المتاحة للعملية الجارية. يتم إنشاء جميع هذه المتغيرات بشكل ديناميكي.

  • 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 بمعلمة الاستعلام لاسترداد قيمة المتغير TEMP.

> REG QUERY HKCU\Environment /V TEMP

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

سوف تلاحظ أحيانًا أن المتغيرات البيئية تعرض بين رموز النسبة المئوية (٪ COMPUTERNAME٪) مثل ما هو موضح أعلاه. هذه هي الطريقة القديمة لعرض المتغيرات البيئية عبر cmd.exe وملفات الدفع. تذكر أن 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.

  • محرك الـ Env: وبيئة الـ Provider – يعمل فقط على تحديد قيم المتغيرات البيئية لجلسة PowerShell الحالية
  • متغيرات $env: – تعمل فقط على تحديد قيم المتغيرات البيئية لجلسة PowerShell الحالية
  • فئة [System.Environment] في .NET – تسمح لك بالاحتفاظ بالمتغيرات البيئية ذات النطاق الخاص بالمستخدم والنظام عبر الجلسات وإعادة التشغيل

محرك الـ Env: وبيئة الـ Provider

واحدة من أفضل الطرق لقراءة المتغيرات البيئية هي مفهوم PowerShell المعروف بـ “PowerShell drives (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:.

نظرًا لأن متغيرات البيئة مخزنة في محرك الأقراص في PowerShell، يمكنك استخدام ميزة إكمال التبويب لتصفح المتغيرات المتاحة كما هو موضح أدناه.

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

دعنا ننتقل الآن إلى بعض الأمثلة على كيفية استخدام محرك الأقراص Env: في PowerShell للعمل مع متغيرات البيئة.

قائمة بمتغيرات البيئة باستخدام 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

في الحالات التي تحتاج فيها إلى إرجاع متغيرات البيئة المحددة فقط ، استخدم أوامر PowerShell القياسية مثل Select-Object و Where-Object لتحديد وتصفية الكائنات المُرجَعة بواسطة موفِّر Env:.

في المثال أدناه ، يتم إرجاع متغير البيئة COMPUTERNAME فقط.

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

كطريقة بديلة ، استخدم أمر 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 باستخدام أمر New-Item. قم بتوفير اسم المتغير البيئي في النموذج Env:\<EnvVarName> لقيمة Name وقيمة متغير البيئة لمعلمة Value كما هو موضح أدناه.

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

استخدم cmdlet Set-Item لتعيين متغير بيئة، أو إنشاء متغير جديد إذا لم يكن موجودا بالفعل. يمكنك أن ترى أدناه باستخدام cmdlet Set-Item، يمكنك إنشاء أو تعديل متغير بيئة.

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

نسخ متغير بيئة بواسطة Env:

في بعض الحالات، قد تحتاج إلى تكرار قيمة متغير بيئة. يمكنك القيام بذلك باستخدام cmdlet 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:

قد تحدث حالات فيها لم يعد هناك حاجة لمتغير بيئة. يمكنك حذف متغيرات البيئة باستخدام واحدة من ثلاث طرق:

  • استخدم cmdlet Set-Item لتعيين متغير بيئة بقيمة فارغة
PS51> Set-Item -Path Env:\MYCOMPUTER -Value ''
PS51> Remove-Item -Path Env:\MYCOMPUTER
  • استخدم cmdlet Clear-Item.
PS51> Clear-Item -Path Env:\MYCOMPUTER

إعادة تسمية متغير بيئة باستخدام Env:

في الحالات التي يحتاج فيها إلى تغيير اسم متغير بيئة، لديك خيار إعادة التسمية بدلاً من حذفه وإعادة إنشائه باستخدام موفر Env:.

استخدم cmdlet Rename-Item لتغيير اسم متغير البيئة مع الحفاظ على قيمته. فيما يلي يمكنك أن ترى أن المتغير MYCOMPUTER تمت إعادة تسميته إلى OLDCOMPUTER مع الاحتفاظ بقيمته.

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

$Env: المتغيرات

بعد أن تمكنت من استخدام محرك Env: للتعامل مع المتغيرات البيئية كملفات، يوضح هذا القسم كيفية التعامل معها كمتغيرات. يمكنك أيضًا إدارة المتغيرات البيئية في جلسة العمل باستخدام محلل التعبيرات في PowerShell. يتيح لك هذا الإصدار استخدام نطاق $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 المفيدة

مثل العديد من تطبيقات ويندوز الأخرى، تحتوي PowerShell على بعض متغيرات البيئة الخاصة بها. متغيران مفيدين للمعرفة هما PSExecutionPolicyPreference و PSModulePath.

PSExecutionPolicyPreference

يخزن متغير البيئة PSExecutionPolicyPreference سياسة تنفيذ PowerShell الحالية. يتم إنشاؤه إذا تم ضبط سياسة تنفيذ 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/