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
- Windows –
- 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
- Windows –
- Aktuální uživatel, všichni hostitelé
- Windows –
$HOME\Documents\PowerShell\Profile.ps1
- Linux –
~/.config/powershell/profile.ps1
- macOS –
~/.config/powershell/profile.ps1
- Windows –
- 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
- Windows –
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ém bloku:
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ém bloku, 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.exe
NoProfile 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.exe
typu:
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
.