about_Environment_Variables
Rövid leírás
Ismerteti, hogyan érheti el és kezelheti a környezeti változókat a PowerShellben.
A környezeti változók az operációs rendszer és más programok által használt adatokat tárolják. A PowerShell a következő környezeti változókat hozza létre:
- POWERSHELL_TELEMETRY_OPTOUT
- POWERSHELL_DISTRIBUTION_CHANNEL
- POWERSHELL_UPDATECHECK
- P Standard kiadás xecutionPolicyPreference
- PSModulePath
- PSModuleAnalysisCachePath
- PSDisableModuleAnalysisCacheCleanup
Ezeknek a változóknak a teljes leírását a cikk PowerShell-környezeti változóiban találja.
Hosszú leírás
A PowerShell bármely támogatott operációsrendszer-platformon elérheti és kezelheti a környezeti változókat. A PowerShell-környezetszolgáltató lehetővé teszi a környezeti változók lekérését, hozzáadását, módosítását, törlését és törlését az aktuális konzolon.
Feljegyzés
A Windowstól eltérően a környezeti változók neve macOS és Linux rendszeren megkülönbözteti a kis- és nagybetűket. Például különböző $env:Path
$env:PATH
környezeti változók nem Windows-platformokon.
A környezeti változók a PowerShell más változótípusaival ellentétben mindig sztringekként vannak tárolva. A többi változótól eltérően a gyermekfolyamatok öröklik őket, például a helyi háttérfeladatok és a modultagok által futtatott munkamenetek. Így a környezeti változók jól használhatók a szülő- és gyermekfolyamatokban szükséges értékek tárolásához.
Windows rendszeren a környezeti változók három hatókörben határozhatók meg:
- Gép (vagy rendszer) hatóköre
- Felhasználói hatókör
- Folyamat hatóköre
A Folyamat hatókör az aktuális folyamatban vagy a PowerShell-munkamenetben elérhető környezeti változókat tartalmazza. A változók listája a szülőfolyamattól öröklődik, és a gép ésa felhasználó hatókörének változóiból jön létre.
Ha módosítja a környezeti változókat a PowerShellben, a módosítás csak az aktuális munkamenetre lesz hatással. Ez a viselkedés hasonlít a set
Windows command Shellben és a setenv
UNIX-alapú környezetekben lévő parancs viselkedésére. A Gép vagy a Felhasználói hatókör értékeinek módosításához a System.Environment osztály metódusait kell használnia.
A gépi hatókörű változók módosításához rendelkeznie kell engedéllyel is. Ha megfelelő engedély nélkül próbál módosítani egy értéket, a parancs meghiúsul, és a PowerShell hibát jelenít meg.
A PowerShell számos különböző módszert kínál a környezeti változók használatára és kezelésére.
- A változó szintaxisa
- A környezetszolgáltató és az elem parancsmagjai
- A .NET System.Environment osztály
A változó szintaxisának használata
A környezeti változók értékeit az alábbi szintaxissal jelenítheti meg és módosíthatja:
$Env:<variable-name>
Például a környezeti változó értékének WINDIR
megjelenítéséhez:
$Env:windir
C:\Windows
Ebben a szintaxisban a dollárjel ($
) egy változót, a meghajtó neve (Env:
) pedig egy környezeti változót, majd a változó nevét (windir
) jelöli.
A környezeti változók értékét az alábbi szintaxissal hozhatja létre és frissítheti:
$Env:<variable-name> = "<new-value>"
Például a Foo
környezeti változó létrehozásához:
$Env:Foo = 'An example'
Mivel a környezeti változók mindig sztringek, használhatja őket, mint bármely más, sztringet tartalmazó változót. Példa:
"The 'Foo' environment variable is set to: $Env:Foo"
$Env:Foo += '!'
$Env:Foo
The 'Foo' environment variable is set to: An example
An example!
A PowerShellben a környezeti változók nem állíthatók be üres sztringre. Ha egy környezeti változót egy üres sztringre $null
állít be, az eltávolítja az aktuális munkamenetből. Példa:
$Env:Foo = ''
$Env:Foo | Get-Member -MemberType Properties
Get-Member : You must specify an object for the Get-Member cmdlet.
At line:1 char:12
+ $env:foo | Get-Member
+ ~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Get-Member], InvalidOperationException
+ FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand
Get-Member
hiba történt, mert a környezeti változó el lett távolítva.
Láthatja, hogy nem ad vissza hibát, ha üres sztringen használja:
'' | Get-Member -MemberType Properties
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Length Property int Length {get;}
A PowerShell változóiról a about_Variables című témakörben talál további információt.
A Környezetszolgáltató és az Elem parancsmagok használata
A PowerShell környezetszolgáltatója lehetővé teszi a környezeti változók fájlrendszer-meghajtóhoz hasonló formátumban történő használatát. Lehetővé teszi környezeti változók és értékek lekérését, hozzáadását, módosítását, törlését és törlését a PowerShellben.
Ha például a környezeti változót a Foo
következő Bar
értékkel szeretné létrehozni:
New-Item -Path Env:\Foo -Value 'Bar'
Name Value
---- -----
Foo Bar
A környezeti változót a következővel Copy-Item
is másolhatja, beállíthatja egy környezeti változó Set-Item
értékét, listázhatja a környezeti változókat, Get-Item
és törölheti a környezeti változót a következővel Remove-Item
: .
Copy-Item -Path Env:\Foo -Destination Env:\Foo2 -PassThru
Set-Item -Path Env:\Foo2 -Value 'BAR'
Get-Item -Path Env:\Foo*
Remove-Item -Path Env:\Foo* -Verbose
Name Value
---- -----
Foo2 Bar
Name Value
---- -----
Foo2 BAR
Foo Bar
VERBOSE: Performing the operation "Remove Item" on target "Item: Foo2".
VERBOSE: Performing the operation "Remove Item" on target "Item: Foo".
A parancsmaggal megtekintheti a Get-ChildItem
környezeti változók teljes listáját:
Get-ChildItem Env:
A környezeti változók kezelésével kapcsolatos további információkért tekintse meg a about_Environment_Provider.
A System.Environment metódusok használata
A System.Environment osztály a GetEnvironmentVariable és a SetEnvironmentVariable metódusokat biztosítja a környezeti változók lekéréséhez és módosításához.
Az alábbi példa létrehoz egy új környezeti változót, Foo
amelynek értéke Bar
, majd visszaadja annak értékét.
[Environment]::SetEnvironmentVariable('Foo','Bar')
[Environment]::GetEnvironmentVariable('Foo')
Bar
A setEnvironmentVariable metódussal eltávolíthat egy környezeti változót úgy, hogy megad egy üres sztringet a változó értékéhez. Például a környezeti változó eltávolításához Foo
:
[Environment]::SetEnvironmentVariable('Foo','')
[Environment]::GetEnvironmentVariable('Foo')
A System.Environment osztály metódusairól további információt a Környezeti módszerek című témakörben talál.
Környezeti változók módosításainak mentése
Windows rendszeren három módszer létezik a környezeti változók állandó módosítására: ezek beállítása a profilban, a SetEnvironmentVariable metódus használata és a System Vezérlőpult használata.
Környezeti változók mentése a profilban
A PowerShell-profilban hozzáadott vagy módosított környezeti változók minden olyan munkamenetben elérhetők, amely betölti a profilját. Ez a módszer a PowerShell bármely verziójához használható bármely támogatott platformon.
Ha például létre szeretné hozni a CompanyUri
környezeti változót, és frissíteni szeretné a Path
környezeti változót, hogy belefoglalja a C:\Tools
mappát, adja hozzá a következő sorokat a PowerShell-profilhoz:
$Env:CompanyUri = 'https://internal.contoso.com'
$Env:Path += ';C:\Tools'
Feljegyzés
Linux vagy macOS rendszeren a kettőspont () a kettőspont;
(:
) használatával választja el az új elérési utat a listában előtte lévő elérési úttól.
Az automatikus változóval $PROFILE
lekérheti a PowerShell-profil elérési útját. További információ a profilokról: about_Profiles.
Környezeti változók mentése a SetEnvironmentVariable használatával
Windows rendszeren megadhat egy hatókört a SetEnvironmentVariable metódushoz harmadik paraméterként a környezeti változó beállításához ebben a hatókörben. A gép és a felhasználói hatókörök is az aktuális folyamaton kívül maradnak, így új vagy módosított környezeti változót menthet.
Ha például egy új környezeti változót Foo
szeretne menteni a gép hatókörébe az értékkel Bar
:
[Environment]::SetEnvironmentVariable('Foo', 'Bar', 'Machine')
A környezeti változókat törölheti a felhasználó vagy a gép hatóköréből úgy, hogy a változó értékét üres sztringre állítja.
[Environment]::SetEnvironmentVariable('Foo', '', 'Machine')
Környezeti változók mentése a Rendszer Vezérlőpult
A Rendszer Vezérlőpult meglévő környezeti változókat adhat hozzá vagy szerkeszthet a Felhasználó és a Rendszer (Gép) hatókörökben. A Windows ezeket az értékeket a beállításjegyzékbe írja, hogy azok a munkamenetek és a rendszer újraindítása során is megmaradjanak.
Környezeti változó állandó módosítása Windows rendszeren a System Vezérlőpult használatával:
- Nyissa meg a Rendszer Vezérlőpult.
- Válassza a Rendszer lehetőséget.
- Válassza a Speciális rendszer Gépház lehetőséget.
- Lépjen a Speciális lapra.
- Környezeti változók kiválasztása ....
- Végezze el a módosításokat.
PowerShell-környezeti változók
A PowerShell-funkciók környezeti változókkal tárolhatják a felhasználói beállításokat. Ezek a változók a beállításváltozókhoz hasonlóan működnek, de a létrehozásukhoz használt munkamenetek gyermek munkamenetei öröklik őket. A beállítási változókkal kapcsolatos további információkért lásd: about_Preference_Variables.
A beállításokat tároló környezeti változók a következők:
POWERSHELL_TELEMETRY_OPTOUT
A telemetria kikapcsolásához állítsa a környezeti változót a következőre
true
: ,yes
vagy1
.További információ: about_Telemetry.
POWERSHELL_DISTRIBUTION_CHANNEL
A PowerShell 7.2-től kezdődően ezt a környezeti változót a telepítőcsomagok állítják be a PowerShell telepítési módjának és forrásának rögzítéséhez.
Ezeket az információkat a Microsoftnak küldött telemetriai adatok tartalmazzák. A felhasználóknak nem szabad megváltoztatniuk ezt az értéket.
POWERSHELL_UPDATECHECK
A frissítési értesítés viselkedése
POWERSHELL_UPDATECHECK
a környezeti változóval módosítható. A következő értékek támogatottak:Off
a frissítésértesítési funkció kikapcsolásaDefault
ugyanaz, mint a nem definiáltPOWERSHELL_UPDATECHECK
:- A GA-kiadások értesítést küldenek a GA-kiadások frissítéséről
- Az előzetes verziójú/RC-kiadások értesítést küldenek a ga és az előzetes verziójú kiadások frissítéséről
LTS
csak a hosszú távú karbantartási (LTS) GA-kiadások frissítéseit értesíti
További információ: about_Update_Notifications.
P Standard kiadás xecutionPolicyPreference
Az aktuális munkamenethez beállított végrehajtási szabályzatot tárolja. Ez a környezeti változó csak akkor létezik, ha egy végrehajtási szabályzatot állít be egyetlen munkamenethez. Ezt kétféleképpen teheti meg.
Indítsa el a munkamenetet a parancssorból a ExecutionPolicy paraméterrel a munkamenet végrehajtási szabályzatának beállításához.
Használja a
Set-ExecutionPolicy
parancsmagot. Használja a Hatókör paramétert a következőProcess
értékkel: .További információ: about_Execution_Policies.
PSModulePath
A
$env:PSModulePath
környezeti változó a modulok és erőforrások keresésére keresendő mappahelyek listáját tartalmazza. Windows rendszeren a mappahelyek listáját a kettőspont (;
) karakter választja el egymástól. Nem Windows-platformokon a kettőspont (:
) elválasztja a mappahelyeket a környezeti változóban.Alapértelmezés szerint a hozzárendelt
$env:PSModulePath
tényleges helyek a következők:Rendszerszintű helyek: Ezek a mappák a PowerShell-lel szállított modulokat tartalmazzák. A modulok a
$PSHOME\Modules
helyszínen vannak tárolva. Ezen a helyen települnek a Windows felügyeleti moduljai is.Felhasználó által telepített modulok: Ezek a felhasználó által telepített modulok.
Install-Module
Hatókör paraméterrel rendelkezik, amely lehetővé teszi annak megadását, hogy a modul telepítve van-e az aktuális felhasználóra vagy az összes felhasználóra. További információ: Install-Module.- Windows rendszeren a felhasználóspecifikus CurrentUser-hatókör helye a
$HOME\Documents\PowerShell\Modules
mappa. Az AllUsers hatókör helye a következő$env:ProgramFiles\PowerShell\Modules
: . - Nem Windows rendszerű rendszereken a felhasználóspecifikus CurrentUser-hatókör helye a
$HOME/.local/share/powershell/Modules
mappa. Az AllUsers hatókör helye a következő/usr/local/share/powershell/Modules
: .
- Windows rendszeren a felhasználóspecifikus CurrentUser-hatókör helye a
Emellett a más könyvtárakban modulokat telepítő programok, például a Program Files könyvtár is hozzáfűzhetik a helyüket az értékhez
$env:PSModulePath
.További információ: about_PSModulePath.
PSModuleAnalysisCachePath
A PowerShell szabályozza a modulok és parancsmagjaik adatainak gyorsítótárazásához használt fájlt. A gyorsítótár a parancsok keresésekor indul el, és a modul importálása után valamikor háttérszálon lesz megírva.
A gyorsítótár alapértelmezett helye a következő:
- Windows PowerShell 5.1:
$env:LOCALAPPDATA\Microsoft\Windows\PowerShell
- PowerShell 6.0 és újabb verziók:
$env:LOCALAPPDATA\Microsoft\PowerShell
- Nem Windows alapértelmezett:
~/.cache/powershell
A gyorsítótár alapértelmezett fájlneve a következő
ModuleAnalysisCache
: . Ha több PowerShell-példány is telepítve van, a fájlnév tartalmaz egy hexadecimális utótagot, hogy telepítésenként egyedi fájlnév legyen.Feljegyzés
Ha a parancsfelderítés nem működik megfelelően, például az IntelliSense nem létező parancsokat jelenít meg, törölheti a gyorsítótárfájlt. A gyorsítótár újra létrejön a PowerShell következő indításakor.
A gyorsítótár alapértelmezett helyének módosításához állítsa be a környezeti változót a PowerShell indítása előtt. A környezeti változó módosításai csak a gyermekfolyamatokat érintik. Az értéknek el kell neveznie egy teljes elérési utat (beleértve a fájlnevet), amelyet a PowerShell jogosult fájlok létrehozására és írására.
A fájlgyorsítótár letiltásához állítsa ezt az értéket érvénytelen helyre, például:
# `NUL` here is a special device on Windows that can't be written to, # on non-Windows you would use `/dev/null` $env:PSModuleAnalysisCachePath = 'NUL'
Ezzel beállítja az NUL-eszköz elérési útját. A PowerShell nem tud írni az elérési útra, de a hibaüzenet nem jelenik meg. A hibakódolóval jelentett hibák a következőkkel láthatók:
Trace-Command -PSHost -Name Modules -Expression { Import-Module Microsoft.PowerShell.Management -Force }
- Windows PowerShell 5.1:
PSDisableModuleAnalysisCacheCleanup
A modulelemzési gyorsítótár írásakor a PowerShell ellenőrzi a már nem létező modulokat, hogy elkerülje a szükségtelenül nagy gyorsítótárat. Néha ezek az ellenőrzések nem kívánatosak, ilyenkor kikapcsolhatja őket úgy, hogy ezt a környezeti változó értékét a következőre
1
állítja.A környezeti változó beállítása azonnal érvénybe lép az aktuális folyamatban.
A PowerShell által használt egyéb környezeti változók
Elérési út adatai
Elérési út
A
$env:PATH
környezeti változó tartalmazza azoknak a mappahelyeknek a listáját, amelyeket az operációs rendszer végrehajtható fájlokra keres. Windows rendszeren a mappahelyek listáját a kettőspont (;
) karakter választja el egymástól. Nem Windows-platformokon a kettőspont (:
) elválasztja a mappahelyeket a környezeti változóban.PATHEXT
A
$env:PATHEXT
változó tartalmazza azon fájlkiterjesztések listáját, amelyeket a Windows végrehajtható fájloknak tekint. Ha a PowerShell-lel végrehajt egy szkriptfájlt a felsorolt bővítmények egyikével, a szkript az aktuális konzolon vagy terminálmunkamenetben fut. Ha a fájlkiterjesztés nem szerepel a listában, a szkript egy új konzolmunkamenetben fut.Annak érdekében, hogy egy másik szkriptnyelv szkriptjei fussanak az aktuális konzolmunkamenetben, adja hozzá a szkriptnyelv által használt fájlkiterjesztést. Ha például Python-szkripteket szeretne futtatni az aktuális konzolon, adja hozzá a
.py
bővítményt a környezeti változóhoz. Ahhoz, hogy a Windows végrehajtható fájlként támogassa a.py
bővítményt, regisztrálnia kell a fájlkiterjesztést a CMD parancshéj ésassoc
parancsaiftype
használatával. A PowerShell nem rendelkezik közvetlen módszerrel a fájlkezelő regisztrálásához. További információkért tekintse meg az ftype parancs dokumentációját.A PowerShell-szkriptek mindig az aktuális konzol munkamenetben kezdődnek. Nem kell hozzáadnia a bővítményt
.PS1
.XDG-változók
Nem Windows-platformokon a PowerShell a következő XDG környezeti változókat használja az XDG alapkönyvtár-specifikációja alapján.
- XDG_CONFIG_HOME
- XDG_DATA_HOME
- XDG_CACHE_HOME
Terminálfunkciók
A PowerShell 7.2-től kezdve a következő környezeti változók használhatók a virtuális terminál olyan funkcióinak szabályozására, mint például a kimenetet színező ANSI-feloldó szekvenciák. Az ANSI-feloldási sorozatok támogatása a KIFEJEZÉS vagy NO_COLOR környezeti változók használatával kapcsolható ki.
KIFEJEZÉS
A viselkedés módosításának
$env:TERM
következő értékei az alábbiak szerint változnak:dumb
-Készletek$Host.UI.SupportsVirtualTerminal = $false
xterm-mono
-Készletek$PSStyle.OutputRendering = PlainText
xtermm
-Készletek$PSStyle.OutputRendering = PlainText
NO_COLOR
Ha
$env:NO_COLOR
létezik, akkor$PSStyle.OutputRendering
egyszerű szövegre van állítva. További információ a NO_COLOR környezeti változóról: https://no-color.org/.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: