Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Rövid leírás
Ismerteti, hogyan érheti el és kezelheti a környezeti változókat a PowerShellben.
Hosszú leírás
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_OPTOUTPOWERSHELL_DISTRIBUTION_CHANNELPOWERSHELL_UPDATECHECKPOWERSHELL_DIAGNOSTICS_OPTOUTPSExecutionPolicyPreferencePSModulePathPSModuleAnalysisCachePathPSDisableModuleAnalysisCacheCleanup
Ezeknek a változóknak a teljes leírását a cikk
A PowerShell bármely támogatott operációsrendszer-platformon elérheti és kezelheti a környezeti változókat. A PowerShell Környezeti szolgá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.
Jegyzet
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. A $Env:Path és a $Env:PATH például különböző 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öre az aktuális folyamatban vagy 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 és Felhasználói hatókörök változóiból épül fel.
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 Windows command Shell set parancsának és a Unix-alapú setenv parancsnak a 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 windir környezeti változó értékének 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 jelöl, amelyet a változó neve (windir) követ.
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éldául:
"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 PowerShell 7.5-től kezdve egy környezeti változót üres sztringre állíthat be. Környezeti változó beállítása, hogy $null eltávolítsa azt az aktuális munkamenetből. Például:
PS> $env:TEST = ''
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST
PS> $env:TEST = $null
PS> $env:TEST.Length
0
PS> Get-ChildItem env:TEST
Get-ChildItem: Cannot find path 'TEST' because it does not exist.
További információ a PowerShell változóiról: about_Variables.
A Környezetszolgáltató és az Elem parancsmagok használata
A PowerShell Környezeti szolgá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.
Például a Foo környezeti változó létrehozása Barértékkel:
New-Item -Path Env:\Foo -Value 'Bar'
Name Value
---- -----
Foo Bar
A környezeti változót átmásolhatja a Copy-Item, beállíthatja egy környezeti változó értékét Set-Item, listázhatja a környezeti változókat Get-Item, és törölheti a környezeti változót 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 Get-ChildItem parancsmaggal megtekintheti a környezeti változók teljes listáját:
Get-ChildItem Env:
A PowerShell 7.5-től kezdve egy környezeti változót egy üres sztringre állíthat be a környezetszolgáltató és Set-Item a parancsmag használatával. Környezeti változó beállítása, hogy $null eltávolítsa azt az aktuális munkamenetből. Például:
PS> Set-Item env:TEST 'Foo'
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST Foo
PS> Set-Item env:TEST ''
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST
PS> Set-Item -Path env:TEST -Value $null
PS> Get-ChildItem env:TEST
Get-ChildItem: Cannot find path 'TEST' because it does not exist.
A környezeti változók kezeléséhez a Környezeti szolgáltató használatával kapcsolatos további információkért lásd: about_Environment_Provider.
A System.Environment metódusok használata
A System.Environment osztály GetEnvironmentVariable() és SetEnvironmentVariable() metódusokat biztosít 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 az értékét.
[Environment]::SetEnvironmentVariable('Foo','Bar')
[Environment]::GetEnvironmentVariable('Foo')
Bar
A PowerShell 7.5-től kezdve egy környezeti változót üres sztringre állíthat be a SetEnvironmentVariable() metódussal, és megadhat egy üres sztringet vagy $null a változó értékét. Például:
PS> [Environment]::SetEnvironmentVariable('Foo','Bar')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo Bar
PS> [Environment]::SetEnvironmentVariable('Foo','')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo
PS> [Environment]::SetEnvironmentVariable('Foo','bar')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo bar
PS> [Environment]::SetEnvironmentVariable('Foo',$null)
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo
Jegyzet
A változó szintaxisával és a szolgáltatói esetekkel ellentétben az érték metódushoz $nullSetEnvironmentVariable() való hozzárendelése nem távolítja el a környezeti változót.
A System.Environment osztály
Állandó környezeti változók létrehozása a Windowsban
Windows rendszeren három módszer létezik egy környezeti változó állandó módosítására:
- Beállítás a profilban
- A
SetEnvironmentVariable()metódus használata - A Rendszer vezérlőpultjának használata
Környezeti változók beállítása 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'
Jegyzet
Linux vagy macOS rendszeren a kettőspontot (:) használjuk a kettőspont (;) helyett, hogy elválasztsunk egy új elérési utat a lista előtt lévő elérési úttól.
A PowerShell-profil elérési útját az $PROFILE automatikus változóval szerezheti be. További információ a profilokról: about_Profiles.
Környezeti változók beállítása 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ó ebben a hatókörben való beállításához. 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 szeretne menteni Foo a gép hatókörébe Barértékkel:
[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 beállítása a System Vezérlőpulton
A Rendszervezérlő panelen hozzáadhat vagy szerkeszthet meglévő környezeti változókat a Felhasználói és Rendszer (Gép) hatóköreiben. 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őpultját.
- Válassza Rendszerlehetőséget.
- Válassza Speciális rendszerbeállításoklehetőséget.
- Lépjen a Speciális lapra.
- Válassza Környezeti változók...lehetőséget.
- Végezze el a módosításokat.
Állandó környezeti változók létrehozása nem Windows-platformokon
Linux és macOS konfigurációs fájlokkal és szkriptekkel rendelkezik, amelyeket az operációs rendszer a környezeti változók beállításához használ az alkalmazás indítása előtt.
Ha a PowerShellt alapértelmezett (bejelentkezési) rendszerhéjként futtatja, környezeti változókat határozhat meg az operációs rendszer által támogatott globális inicializálási fájlokban. Linuxon például hozzáadhat környezeti változókat a /etc/environment fájlhoz, vagy létrehozhat egy szkriptet, amely beállítja a környezeti változókat, és elhelyezi azt a /etc/profile.d mappában. MacOS rendszeren környezeti változókat adhat hozzá a /etc/profile fájlhoz.
Ha egy másik rendszerhéjból indítja el a PowerShellt, környezeti változókat határozhat meg a nem bejelentkezési rendszerhéjak által használt rendszerhéj-specifikus inicializálási fájlokban, például ~/.bashrcbash vagy ~/.zshrczsh.
További információkért tekintse meg az operációs rendszer és a parancsértelmező saját dokumentációját.
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ásvá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_OPTOUTA telemetria kikapcsolásához állítsa a környezeti változót
true,yesvagy1értékre. További információkért lásd a(z) about_Telemetryelemet.Ahhoz, hogy ez a környezeti változó érvénybe lépjen, a PowerShell-folyamat megkezdése előtt be kell állítani. Az állandó környezeti változók létrehozásával kapcsolatos információkért tekintse meg az előző szakaszokat.
POWERSHELL_DISTRIBUTION_CHANNELA 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_UPDATECHECKA frissítésértesítés viselkedése a
POWERSHELL_UPDATECHECKkörnyezeti változóval módosítható. További tájékoztatásért tekintse meg: about_Update_Notifications.A következő értékek támogatottak:
-
Offkikapcsolja a frissítésértesítési funkciót -
Defaultugyanaz, mint ha nincs meghatározva aPOWERSHELL_UPDATECHECK:- A GA-kiadásokról szóló értesítések tájékoztatják a GA-kiadások frissítéséről
- Az előzetes verziójú és RC-kiadások értesítést küldenek a GA és az előzetes kiadások frissítéseiről.
-
LTScsak a hosszú távú karbantartási (LTS) GA-kiadások frissítéseit értesíti
A környezeti változó nem alapértelmezett értékeit be kell állítani a PowerShell-folyamat megkezdése előtt. Az állandó környezeti változók létrehozásával kapcsolatos információkért tekintse meg az előző szakaszokat.
-
POWERSHELL_DIAGNOSTICS_OPTOUTEz a környezeti változó a PowerShell 7.6-preview.5-ben lett hozzáadva. Alapértelmezés szerint a PowerShell létrehoz egy elnevezett csövet, amelyet az IPC-hez (IPC) használnak, például
Enter-PSHostProcess. A PowerShell indításkor létrehozza a megnevezett csövet, hogy szükség esetén használható legyen.A nem Windows-platformokon a nevesített csövek fájlként vannak implementálva a
/tmpmappában. Ha a PowerShell összeomlik, előfordulhat, hogy ezek a fájlok nem törlődnek. Idővel ezek a fájlok felhalmozódhatnak.A PowerShell 7.6-tól
POWERSHELL_DIAGNOSTICS_OPTOUTkezdve a következőrefalsevan állítva: . A nevesített cső létrehozásának kikapcsolásához állítsa a környezeti változót a következőretrue: ,yesvagy1.PSExecutionPolicyPreferenceAz 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-ExecutionPolicyparancsmagot. Használja a Hatókör paramétertProcessértékkel.Állítsa be manuálisan a környezeti változót. A változó értékének módosítása megváltoztatja az aktuális folyamat végrehajtási szabályzatát.
Ezek az információk csak a Windows platformra vonatkoznak. További információkért lásd: about_Execution_Policies.
PSModulePathA
$Env:PSModulePathkö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
$Env:PSModulePathhozzárendelt 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\Moduleshelyen 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-Modulerendelkezik egy Hatókör paraméterrel, 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\Modulesmappa. A AllUsers hatókör helye$Env:ProgramFiles\PowerShell\Modules. - Nem Windows rendszerű rendszereken a felhasználóspecifikus CurrentUser hatókör helye a
$HOME/.local/share/powershell/Modulesmappa. A AllUsers hatókör helye/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 helyüket a
$Env:PSModulePathértékéhez.További információért lásd: about_PSModulePath.
PSModuleAnalysisCachePathA 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
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.Jegyzet
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. 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 környezeti változó módosításai csak a gyermekfolyamatokat érintik. Az állandó környezeti változók létrehozásával kapcsolatos információkért tekintse meg az előző szakaszokat.
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 a 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 hibák a nyomkövető segítségével láthatók:
Trace-Command -PSHost -Name Modules -Expression { Import-Module Microsoft.PowerShell.Management -Force }- Windows PowerShell 5.1:
PSDisableModuleAnalysisCacheCleanupA 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
1értékre állítja.A környezeti változó beállítása az aktuális folyamat későbbi törlési eseményeinél lép érvénybe. Annak érdekében, hogy a törlés indításkor le legyen tiltva, be kell állítania a környezeti változót a PowerShell indítása előtt. Az állandó környezeti változók létrehozásával kapcsolatos információkért tekintse meg az előző szakaszokat.
A PowerShell által használt egyéb környezeti változók
Elérési út adatai
PATHA
$Env:PATHkö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.PATHEXTA
$Env:PATHEXTvá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
.pybővítményt a környezeti változóhoz. Ahhoz, hogy a Windows végrehajtható fájlként támogassa a.pybővítményt, regisztrálnia kell a fájlkiterjesztést a CMD parancshéjftypeésassocparancsaival. A PowerShell nem rendelkezik közvetlen módszerrel a fájlkezelő regisztrálásához. További információt a ftype parancs dokumentációjában talál.A PowerShell-szkriptek mindig az aktuális konzol munkamenetben kezdődnek. Nem kell hozzáadnia a
.ps1bővítményt.XDGváltozókNem Windows-platformokon a PowerShell a következő XDG környezeti változókat használja az XDG Alapkönyvtár specifikációja.
XDG_CONFIG_HOMEXDG_DATA_HOMEXDG_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ósorozatok támogatása kikapcsolható a TERM vagy NO_COLOR környezeti változók használatával.
TERMA
$Env:TERMalábbi értékei az alábbiak szerint módosítják a viselkedést:-
dumb–$Host.UI.SupportsVirtualTerminal = $falsebeállítása -
xterm-mono–$PSStyle.OutputRendering = PlainTextbeállítása -
xterm–$PSStyle.OutputRendering = PlainTextbeállítása
-
NO_COLORHa
$Env:NO_COLORlétezik, akkor$PSStyle.OutputRenderingPlainTextértékre van állítva. ANO_COLORkörnyezeti változóval kapcsolatos további információkért lásd: https://no-color.org/.