Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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_UPDATECHECKPSExecutionPolicyPreferencePSModulePathPSModuleAnalysisCachePathPSDisableModuleAnalysisCacheCleanup
Ezeknek a változóknak a teljes leírását a cikk PowerShell-környezeti változóiban találja.
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.
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 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 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 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élda:
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.
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-Itemis 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 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élda:
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é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 biztosítja a GetEnvironmentVariable() környezeti változók lekérésének és SetEnvironmentVariable() módosításának módszereit.
Az alábbi példa létrehoz egy új környezeti változót, Fooamelynek értéke Bar , majd visszaadja annak é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élda:
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
Feljegyzés
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 metódusairól további információt a Környezeti módszerek című témakörben talál.
Á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őpult 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'
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 beállítása a SetEnvironmentVariable() használatával
Windows rendszeren megadhatja a SetEnvironmentVariable() metódus hatókörét 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 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 beállítása 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 rendszerbeállítások 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.
Á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 fájlhoz, vagy létrehozhat egy szkriptet, amely beállítja a /etc/environment 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 ~/.bashrc a rendszerhéjhoz bash vagy ~/.zshrc a rendszerhéjhoz zsh.
További információkért tekintse meg az operációs rendszer és az alapértelmezett rendszerhéj 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á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_OPTOUTA telemetria kikapcsolásához állítsa a környezeti változót a következőre
true: ,yesvagy1. További információ: about_Telemetry.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ési értesítés viselkedése
POWERSHELL_UPDATECHECKa környezeti változóval módosítható. További információ: about_Update_Notifications.A következő értékek támogatottak:
-
Offa frissítésértesítési funkció kikapcsolása -
Defaultugyanaz, 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
-
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.
-
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étert a következőProcessé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ó: 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 hozzárendelt
$Env:PSModulePathté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\Moduleshelyszí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-ModuleHató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\Modulesmappa. 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/Modulesmappa. 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.
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 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. 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 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:
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 a következőre
1á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éj ésftypeparancsaiassochaszná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.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 alapján.
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ási sorozatok támogatása kikapcsolható a TERMNO_COLOR környezeti változók használatával.
TERMA viselkedés módosításának
$Env:TERMkövetkező értékei az alábbiak szerint változnak:-
dumb-Készletek$Host.UI.SupportsVirtualTerminal = $false -
xterm-mono-Készletek$PSStyle.OutputRendering = PlainText -
xterm-Készletek$PSStyle.OutputRendering = PlainText
-
NO_COLORHa
$Env:NO_COLORlétezik, akkor$PSStyle.OutputRenderinga beállítás értéke .PlainTextA környezeti változóval kapcsolatosNO_COLORtovábbi információkért lásd: https://no-color.org/.