about_Profiles

Krátký popis

Popisuje, jak vytvořit a použít profil PowerShellu.

Dlouhý popis

Můžete vytvořit profil PowerShellu pro přizpůsobení prostředí a přidání prvků specifických pro relaci relace do každé relace PowerShellu, kterou spustíte.

Profil PowerShellu je skript, který se spustí při spuštění PowerShellu. Profil můžete použít jako spouštěcí skript k přizpůsobení prostředí. Můžete přidávat příkazy, aliasy, funkce, proměnné, moduly, jednotky PowerShellu a další. Do profilu můžete také přidat další prvky specifické pro relaci, aby byly dostupné v každé relaci, aniž byste je museli importovat nebo znovu vytvořit.

PowerShell podporuje několik profilů pro uživatele a hostitelské programy. Nevytáčí ale profily za vás.

Typy a umístění profilů

PowerShell podporuje několik souborů profilu, které jsou omezené na uživatele a hostitele PowerShellu. V počítači můžete mít libovolný nebo všechny tyto profily.

Konzola PowerShellu podporuje následující základní soubory profilu. Tyto cesty k souborům jsou výchozími umístěními.

  • Všichni uživatelé, všichni hostitelé
    • Windows – $PSHOME\Profile.ps1
    • Linux – /opt/microsoft/powershell/7/profile.ps1
    • macOS – /usr/local/microsoft/powershell/7/profile.ps1
  • Všichni uživatelé, aktuální hostitel
    • Windows – $PSHOME\Microsoft.PowerShell_profile.ps1
    • Linux – /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
    • macOS – /usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
  • Aktuální uživatel, všichni hostitelé
    • Windows – $HOME\Documents\PowerShell\Profile.ps1
    • Linux – ~/.config/powershell/profile.ps1
    • macOS – ~/.config/powershell/profile.ps1
  • Aktuální uživatel, aktuální hostitel
    • Windows – $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    • Linux – ~/.config/powershell/Microsoft.PowerShell_profile.ps1
    • macOS – ~/.config/powershell/Microsoft.PowerShell_profile.ps1

Poznámka:

Ve Windows je možné umístění Documents složky změnit přesměrováním složky nebo OneDrivem. Nedoporučujeme přesměrovat Documents složku do sdílené síťové složky ani ji zahrnout na OneDrive. Přesměrování složky může způsobit selhání načtení modulů a vytváření chyb ve skriptech profilu. Informace o odebrání Documents složky ze správy OneDrivu najdete v dokumentaci k OneDrivu.

Skripty profilu se spouští v uvedeném pořadí. To znamená, že změny provedené v profilu AllUsersAllHosts lze přepsat libovolným z dalších skriptů profilu. Profil CurrentUserCurrentHost vždy běží jako poslední. V nápovědě k PowerShellu je profil CurrentUserCurrentHost profil nejčastěji označovaný jako váš profil PowerShellu.

Jiné programy, které hostují PowerShell, můžou podporovat vlastní profily. Visual Studio Code (VS Code) například podporuje následující profily specifické pro hostitele.

  • Všichni uživatelé, aktuální hostitel – $PSHOME\Microsoft.VSCode_profile.ps1
  • Aktuální uživatel, aktuální hostitel – $HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1

Cesty k profilu zahrnují následující proměnné:

  • Proměnná $PSHOME ukládá instalační adresář pro PowerShell.
  • Proměnná $HOME ukládá domovský adresář aktuálního uživatele.

Proměnná $PROFILE

Automatická $PROFILE proměnná ukládá cesty k profilům PowerShellu, které jsou k dispozici v aktuální relaci.

Pokud chcete zobrazit cestu profilu, zobrazte hodnotu $PROFILE proměnné. Proměnnou v příkazu můžete také použít $PROFILE k reprezentaci cesty.

Proměnná $PROFILE ukládá cestu k profilu Aktuální uživatel, Aktuální hostitel. Ostatní profily jsou uloženy ve vlastnostech poznámky $PROFILE proměnné.

Proměnná $PROFILE má například v konzole Windows PowerShellu následující hodnoty.

  • Aktuální uživatel, aktuální hostitel – $PROFILE
  • Aktuální uživatel, aktuální hostitel – $PROFILE.CurrentUserCurrentHost
  • Aktuální uživatel, všichni hostitelé – $PROFILE.CurrentUserAllHosts
  • Všichni uživatelé, aktuální hostitel – $PROFILE.AllUsersCurrentHost
  • Všichni uživatelé, všichni hostitelé – $PROFILE.AllUsersAllHosts

Vzhledem k tomu, že se hodnoty $PROFILE proměnné mění pro každého uživatele a v každé hostitelské aplikaci, ujistěte se, že v každé hostitelské aplikaci PowerShellu, kterou používáte, zobrazovat hodnoty proměnných profilu.

Pokud chcete zobrazit aktuální hodnoty $PROFILE proměnné, zadejte:

$PROFILE | Select-Object *

Proměnnou $PROFILE můžete použít v mnoha příkazech. Například následující příkaz otevře profil Aktuální uživatel, Aktuální hostitel v Poznámkový blok:

notepad $PROFILE

Následující příkaz určuje, jestli byl v místním počítači vytvořen profil Všichni uživatelé, všichni hostitelé:

Test-Path -Path $PROFILE.AllUsersAllHosts

Vytvoření profilu

Pokud chcete vytvořit profil PowerShellu, použijte následující formát příkazu:

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

Pokud chcete například vytvořit profil pro aktuálního uživatele v aktuální hostitelské aplikaci PowerShellu, použijte následující příkaz:

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

V tomto příkazu if příkaz zabrání přepsání existujícího profilu. Nahraďte hodnotu $PROFILE proměnné cestou k souboru profilu, který chcete vytvořit.

Poznámka:

Pokud chcete vytvořit profily Všichni uživatelé ve Windows Vista a novějších verzích Windows, spusťte PowerShell s možností Spustit jako správce .

Úprava profilu

V textovém editoru můžete otevřít libovolný profil PowerShellu, například Poznámkový blok.

Pokud chcete otevřít profil aktuálního uživatele v aktuální hostitelské aplikaci PowerShellu v Poznámkový blok, zadejte:

notepad $PROFILE

Pokud chcete otevřít další profily, zadejte název profilu. Pokud chcete například otevřít profil pro všechny uživatele všech hostitelských aplikací, zadejte:

notepad $PROFILE.AllUsersAllHosts

Pokud chcete změny použít, uložte soubor profilu a restartujte PowerShell.

Jak zvolit profil

Pokud používáte více hostitelských aplikací, vložte položky, které používáte ve všech hostitelských aplikacích, do svého $PROFILE.CurrentUserAllHosts profilu. Umístěte položky specifické pro hostitelskou aplikaci, například příkaz, který nastaví barvu pozadí pro hostitelskou aplikaci, do profilu, který je specifický pro danou hostitelskou aplikaci.

Pokud jste správce, který upravuje PowerShell pro mnoho uživatelů, postupujte podle těchto pokynů:

  • Uložení běžných položek v $PROFILE.AllUsersAllHosts profilu
  • Ukládání položek specifických pro hostitelskou aplikaci v $PROFILE.AllUsersCurrentHost profilech specifických pro hostitelskou aplikaci
  • Ukládání položek pro konkrétní uživatele v profilech specifických pro uživatele

Nezapomeňte zkontrolovat dokumentaci k hostitelské aplikaci pro všechny speciální implementace profilů PowerShellu.

Jak používat profil

Mnoho položek, které vytvoříte v PowerShellu, a většina příkazů, které spustíte, ovlivní pouze aktuální relaci. Po ukončení relace se položky odstraní.

Příkazy a položky specifické pro relaci zahrnují proměnné PowerShellu, proměnné prostředí, aliasy, funkce, příkazy a moduly PowerShellu, které do relace přidáte.

Pokud chcete tyto položky uložit a zpřístupnit je ve všech budoucích relacích, přidejte je do profilu PowerShellu.

Dalším běžným použitím profilů je ukládání často používaných funkcí, aliasů a proměnných. Když položky uložíte do profilu, můžete je použít v libovolné příslušné relaci, aniž byste je znovu vytvořili.

Jak spustit profil

Když soubor profilu otevřete, je prázdný. Můžete ho ale vyplnit proměnnými, aliasy a příkazy, které často používáte.

Tady je několik návrhů, které vám pomůžou začít.

Přidání funkce se seznamem aliasů pro libovolnou rutinu

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

Přizpůsobení konzoly

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

Přidání přizpůsobené výzvy PowerShellu

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

Další informace o příkazovém řádku PowerShellu najdete v tématu about_Prompts.

Další příklady profilů najdete v tématu Přizpůsobení prostředí.

Parametr NoProfile

Pokud chcete spustit PowerShell bez profilů, použijte parametr pwsh.exeNoProfile programu, který spouští PowerShell.

Začněte tím, že otevřete program, který může spustit PowerShell, například Cmd.exe nebo samotný PowerShell. Můžete také použít dialogové okno Spustit ve Windows.

Zadejte:

pwsh -NoProfile

Úplný seznam parametrů pwsh.exetypu:

pwsh -?

Profily a zásady spouštění

Zásada spouštění PowerShellu určuje, jestli můžete spouštět skripty a načítat konfigurační soubory, včetně profilů. Výchozí je zásada omezeného spouštění. Zabrání spuštění všech skriptů, včetně profilů. Pokud použijete zásadu s omezeným přístupem, profil se nespustí a jeho obsah se nepoužije.

Příkaz Set-ExecutionPolicy nastaví a změní zásady provádění. Je to jeden z několika příkazů, které platí ve všech relacích PowerShellu, protože hodnota je uložena v registru. Když otevřete konzolu, nemusíte ji nastavovat a nemusíte ukládat Set-ExecutionPolicy příkaz do svého profilu.

Profily a vzdálené relace

Profily PowerShellu se nespouštějí automaticky ve vzdálených relacích, takže příkazy, které přidá profily, nejsou ve vzdálené relaci. Automatická proměnná se navíc $PROFILE ve vzdálených relacích nenaplní.

Pokud chcete spustit profil v relaci, použijte rutinu Invoke-Command .

Například následující příkaz spustí profil Aktuální uživatel, Aktuální hostitel z místního počítače v relaci v $s.

Invoke-Command -Session $s -FilePath $PROFILE

Následující příkaz spustí profil Aktuální uživatel, Aktuální hostitel ze vzdáleného počítače v relaci v $s. $PROFILE Protože proměnná není vyplněná, příkaz použije explicitní cestu k profilu. Používáme operátor dot sourcing, aby se profil spustil v aktuálním oboru na vzdáleném počítači, a ne ve vlastním oboru.

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

Po spuštění tohoto příkazu jsou příkazy, které profil přidá do relace, k dispozici v $s.

Viz také