about_Profiles

Rövid leírás

Bemutatja, hogyan hozhat létre és használhat PowerShell-profilokat.

Hosszú leírás

Létrehozhat egy PowerShell-profilt, amely testre szabja a környezetet, és minden megkezdett PowerShell-munkamenethez hozzáadja a munkamenet-specifikus elemeket.

A PowerShell-profilok olyan szkriptek, amelyek a PowerShell indításakor futnak. A profilt indítási szkriptként használhatja a környezet testreszabásához. Parancsokat, aliasokat, függvényeket, változókat, modulokat, PowerShell-meghajtókat és egyebeket is hozzáadhat. Más munkamenetspecifikus elemeket is hozzáadhat a profiljához, így azok minden munkamenetben elérhetők anélkül, hogy importálnia vagy újra létre kellene hoznia őket.

A PowerShell számos profilt támogat a felhasználók és a gazdagépprogramok számára. Azonban nem hozza létre a profilokat.

Profiltípusok és helyek

A PowerShell számos olyan profilfájlt támogat, amelyek hatóköre a felhasználókra és a PowerShell-gazdagépekre terjed ki. Ezeket a profilokat a számítógépen is használhatja.

A PowerShell-konzol az alábbi alapvető profilfájlokat támogatja. Ezek a fájlelérési utak az alapértelmezett helyek.

  • Minden felhasználó, minden gazdagép – $PSHOME\Profile.ps1
  • Minden felhasználó, aktuális gazdagép – $PSHOME\Microsoft.PowerShell_profile.ps1
  • Jelenlegi felhasználó, minden gazdagép – $HOME\Documents\WindowsPowerShell\Profile.ps1
  • Aktuális felhasználó, aktuális gazdagép – $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Feljegyzés

Windows rendszerben a Documents mappa helye mappaátirányítással vagy OneDrive-tal módosítható. Nem javasoljuk, hogy átirányítsa a Documents mappát egy hálózati megosztásra, és ne foglalja bele a OneDrive-ba. A mappa átirányításával a modulok betöltése meghiúsulhat, és hibák keletkezhetnek a profilszkriptekben. A mappa OneDrive-kezelésből való eltávolításával Documents kapcsolatos információkért tekintse meg a OneDrive dokumentációját.

A profilszkripteket a rendszer a felsorolt sorrendben hajtja végre. Ez azt jelenti, hogy az AllUsersAllHosts-profilban végrehajtott módosításokat felülbírálódhat bármely más profilszkript. A CurrentUserCurrentHost profil mindig utoljára fut. A PowerShell súgójában a CurrentUserCurrentHost profil az a profil, amelyet leggyakrabban PowerShell-profilnak neveznek.

A PowerShellt futtató egyéb programok támogathatják saját profiljaikat. A Visual Studio Code (VS Code) például a következő gazdagépspecifikus profilokat támogatja.

  • Minden felhasználó, aktuális gazdagép – $PSHOME\Microsoft.VSCode_profile.ps1
  • Aktuális felhasználó, aktuális gazdagép – $HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1

A profil elérési útjai a következő változókat tartalmazzák:

  • A $PSHOME változó a PowerShell telepítési könyvtárát tárolja
  • A $HOME változó az aktuális felhasználó kezdőkönyvtárát tárolja

A $PROFILE változó

Az $PROFILE automatikus változó tárolja az aktuális munkamenetben elérhető PowerShell-profilok elérési útját.

A profil elérési útjának megtekintéséhez jelenítse meg a $PROFILE változó értékét. A parancsban lévő változóval $PROFILE is jelölheti az elérési utat.

A $PROFILE változó az "Aktuális felhasználó, aktuális gazdagép" profil elérési útját tárolja. A többi profil a változó jegyzettulajdonságaiban $PROFILE lesz mentve.

A változó például $PROFILE a következő értékekkel rendelkezik a Windows PowerShell-konzolon.

  • Aktuális felhasználó, aktuális gazdagép – $PROFILE
  • Aktuális felhasználó, aktuális gazdagép – $PROFILE.CurrentUserCurrentHost
  • Jelenlegi felhasználó, minden gazdagép – $PROFILE.CurrentUserAllHosts
  • Minden felhasználó, aktuális gazdagép – $PROFILE.AllUsersCurrentHost
  • Minden felhasználó, minden gazdagép – $PROFILE.AllUsersAllHosts

Mivel a $PROFILE változó értékei az egyes felhasználók és az egyes gazdagépalkalmazások esetében változnak, győződjön meg arról, hogy az egyes PowerShell-gazdagépalkalmazásokban megjeleníti a profilváltozók értékeit.

A változó aktuális értékeinek megtekintéséhez írja be a $PROFILE következőt:

$PROFILE | Select-Object *

A változót számos parancsban használhatja $PROFILE . A következő parancs például megnyitja az "Aktuális felhasználó, aktuális gazdagép" profilt Jegyzettömb:

notepad $PROFILE

A következő parancs határozza meg, hogy a helyi számítógépen létrejött-e a "Minden felhasználó, minden gazdagép" profil:

Test-Path -Path $PROFILE.AllUsersAllHosts

Profil létrehozása

PowerShell-profil létrehozásához használja a következő parancsformátumot:

if (!(Test-Path -Path <profile-name>)) {
  New-Item -ItemType File -Path <profile-name> -Force
}

Ha például profilt szeretne létrehozni az aktuális felhasználó számára az aktuális PowerShell-gazdagépalkalmazásban, használja a következő parancsot:

if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}

Ebben a parancsban az if utasítás megakadályozza egy meglévő profil felülírását. Cserélje le a $PROFILE változó értékét a létrehozni kívánt profilfájl elérési útjára.

Feljegyzés

Ha "Minden felhasználó" profilt szeretne létrehozni a Windows Vista és a Windows újabb verzióiban, indítsa el a PowerShellt a Futtatás rendszergazdaként lehetőséggel.

Profil szerkesztése

Bármely PowerShell-profilt megnyithat egy szövegszerkesztőben, például Jegyzettömb.

Ha meg szeretné nyitni az aktuális felhasználó profilját az aktuális PowerShell-gazdagépalkalmazásban a Jegyzettömb, írja be a következőt:

notepad $PROFILE

Más profilok megnyitásához adja meg a profil nevét. Ha például meg szeretné nyitni a profilt az összes gazdaalkalmazás összes felhasználója számára, írja be a következőt:

notepad $PROFILE.AllUsersAllHosts

A módosítások alkalmazásához mentse a profilfájlt, majd indítsa újra a PowerShellt.

Profil kiválasztása

Ha több gazdagépalkalmazást használ, helyezze az összes gazdagépalkalmazásban használt elemeket a $PROFILE.CurrentUserAllHosts profiljába. Helyezze a gazdagépalkalmazásra jellemző elemeket, például egy gazdaalkalmazás háttérszínét meghatározó parancsot egy adott gazdagépalkalmazásra jellemző profilba.

Ha Ön rendszergazda, aki számos felhasználóhoz testre szabja a PowerShellt, kövesse az alábbi irányelveket:

  • A profilban található $PROFILE.AllUsersAllHosts gyakori elemek tárolása
  • A gazdagépalkalmazásra jellemző elemek tárolása a gazdaalkalmazásra jellemző profilokban $PROFILE.AllUsersCurrentHost
  • Elemek tárolása adott felhasználók számára a felhasználóspecifikus profilokban

Ellenőrizze a gazdaalkalmazás dokumentációját a PowerShell-profilok speciális implementációiról.

Profil használata

A PowerShellben létrehozott elemek és a legtöbb futtatott parancs csak az aktuális munkamenetre van hatással. A munkamenet befejezésekor a rendszer törli az elemeket.

A munkamenet-specifikus parancsok és elemek közé tartoznak a munkamenethez hozzáadott PowerShell-változók, környezeti változók, aliasok, függvények, parancsok és PowerShell-modulok.

Ha menteni szeretné ezeket az elemeket, és elérhetővé szeretné tenni őket az összes jövőbeli munkamenetben, vegye fel őket egy PowerShell-profilba.

A profilok másik gyakori használata a gyakran használt függvények, aliasok és változók mentése. Amikor egy profilba menti az elemeket, azokat bármely vonatkozó munkamenetben használhatja anélkül, hogy újra létrejönnek.

Profil indítása

Amikor megnyitja a profilfájlt, az üres lesz. A gyakran használt változókkal, aliasokkal és parancsokkal azonban kitöltheti.

Íme néhány javaslat az első lépésekhez.

Olyan függvény hozzáadása, amely felsorolja a parancsmagok aliasát

function Get-CmdletAlias ($cmdletname) {
  Get-Alias |
    Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
      Format-Table -Property Definition, Name -AutoSize
}

A konzol testreszabása

function CustomizeConsole {
  $hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
CustomizeConsole

Testreszabott PowerShell-üzenet hozzáadása

function Prompt {
    $env:COMPUTERNAME + "\" + (Get-Location) + "> "
}

A PowerShell-parancssorról további információt a about_Prompts talál.

További példákat a rendszerhéj-környezet testreszabása című témakörben talál.

A NoProfile paraméter

Ha profilok nélkül szeretné elindítani a PowerShellt, használja a PowerShellt indító program NoProfile paraméterétpowershell.exe.

Először nyisson meg egy programot, amely elindíthatja a PowerShellt, például Cmd.exe vagy magát a PowerShellt. A Futtatás párbeszédpanelt a Windowsban is használhatja.

Típus:

powershell -NoProfile

A powershell.exe paramétereinek teljes listájához írja be a következőt:

powershell -?

Profilok és végrehajtási szabályzat

A PowerShell végrehajtási szabályzata részben meghatározza, hogy futtathat-e szkripteket, és betölthet-e konfigurációs fájlokat, beleértve a profilokat is. A korlátozott végrehajtási szabályzat az alapértelmezett. Megakadályozza az összes szkript futtatását, beleértve a profilokat is. Ha a "Korlátozott" szabályzatot használja, a profil nem fut, és a tartalma nem lesz alkalmazva.

Egy Set-ExecutionPolicy parancs beállítja és módosítja a végrehajtási szabályzatot. ez azon kevés parancsok egyike, amelyek az összes PowerShell-munkamenetben érvényesek, mert az érték a beállításjegyzékben van mentve. A konzol megnyitásakor nem kell beállítania, és nem kell parancsot Set-ExecutionPolicy tárolnia a profiljában.

Profilok és távoli munkamenetek

A PowerShell-profilok nem futnak automatikusan a távoli munkamenetekben, így a profilok által hozzáadott parancsok nem jelennek meg a távoli munkamenetben. Emellett az $PROFILE automatikus változó nem töltődik fel távoli munkamenetekben.

Profil munkamenetben való futtatásához használja az Invoke-Command parancsmagot.

A következő parancs például az "Aktuális felhasználó, Aktuális gazdagép" profilt futtatja a helyi számítógépről a munkamenetben $s.

Invoke-Command -Session $s -FilePath $PROFILE

A következő parancs az "Aktuális felhasználó, Aktuális gazdagép" profilt futtatja a munkamenet távoli számítógépéről a következőben $s: Mivel a $PROFILE változó nincs feltöltve, a parancs a profil explicit elérési útját használja. Pont-beszerzési operátort használunk, hogy a profil a távoli számítógépen az aktuális hatókörben futjon, és ne a saját hatókörében.

Invoke-Command -Session $s -ScriptBlock {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

A parancs futtatása után a profil által a munkamenethez hozzáadott parancsok a következő helyen $sérhetők el:

Lásd még