about_Profiles
Kort beskrivning
Beskriver hur du skapar och använder en PowerShell-profil.
Lång beskrivning
Du kan skapa en PowerShell-profil för att anpassa din miljö och lägga till sessionsspecifika element i varje PowerShell-session som du startar.
En PowerShell-profil är ett skript som körs när PowerShell startar. Du kan använda profilen som ett startskript för att anpassa din miljö. Du kan lägga till kommandon, alias, funktioner, variabler, moduler, PowerShell-enheter med mera. Du kan också lägga till andra sessionsspecifika element i din profil så att de är tillgängliga i varje session utan att behöva importera eller återskapa dem.
PowerShell stöder flera profiler för användare och värdprogram. Den skapar dock inte profilerna åt dig.
Profiltyper och platser
PowerShell stöder flera profilfiler som är begränsade till användare och PowerShell-värdar. Du kan ha någon eller alla dessa profiler på datorn.
PowerShell-konsolen stöder följande grundläggande profilfiler. Dessa filsökvägar är standardplatserna.
- Alla användare, alla värdar –
$PSHOME\Profile.ps1
- Alla användare, aktuell värd –
$PSHOME\Microsoft.PowerShell_profile.ps1
- Aktuell användare, alla värdar –
$HOME\Documents\WindowsPowerShell\Profile.ps1
- Aktuell användare, aktuell värd –
$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Kommentar
I Windows kan platsen för Documents
mappen ändras genom mappomdirigering eller OneDrive. Vi rekommenderar inte att du omdirigerar Documents
mappen till en nätverksresurs eller inkluderar den i OneDrive. Om du omdirigerar mappen kan det leda till att moduler inte kan läsas in och skapa fel i dina profilskript.
Information om hur du tar bort Documents
mappen från OneDrive-hantering finns i OneDrive-dokumentationen.
Profilskripten körs i den ordning som anges. Det innebär att ändringar som görs i Profilen AllUsersAllHosts kan åsidosättas av något av de andra profilskripten. CurrentUserCurrentHost-profilen körs alltid sist. I PowerShell-hjälpen är CurrentUserCurrentHost-profilen den profil som oftast kallas din PowerShell-profil.
Andra program som är värdar för PowerShell kan stödja sina egna profiler. Visual Studio Code (VS Code) stöder till exempel följande värdspecifika profiler.
- Alla användare, aktuell värd –
$PSHOME\Microsoft.VSCode_profile.ps1
- Aktuell användare, aktuell värd –
$HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1
Profilsökvägarna innehåller följande variabler:
- Variabeln
$PSHOME
lagrar installationskatalogen för PowerShell - Variabeln
$HOME
lagrar den aktuella användarens hemkatalog
Variabeln $PROFILE
Den $PROFILE
automatiska variabeln lagrar sökvägarna till de PowerShell-profiler som är tillgängliga i den aktuella sessionen.
Om du vill visa en profilsökväg visar du värdet för variabeln $PROFILE
. Du kan också använda variabeln $PROFILE
i ett kommando för att representera en sökväg.
Variabeln $PROFILE
lagrar sökvägen till profilen "Aktuell användare, aktuell värd". De andra profilerna sparas i anteckningsegenskaperna för variabeln $PROFILE
.
Variabeln $PROFILE
har till exempel följande värden i Windows PowerShell-konsolen.
- Aktuell användare, aktuell värd –
$PROFILE
- Aktuell användare, aktuell värd –
$PROFILE.CurrentUserCurrentHost
- Aktuell användare, alla värdar –
$PROFILE.CurrentUserAllHosts
- Alla användare, aktuell värd –
$PROFILE.AllUsersCurrentHost
- Alla användare, alla värdar –
$PROFILE.AllUsersAllHosts
Eftersom värdena för variabeln $PROFILE
ändras för varje användare och i varje värdprogram kontrollerar du att du visar värdena för profilvariablerna i varje PowerShell-värdprogram som du använder.
Om du vill se variabelns $PROFILE
aktuella värden skriver du:
$PROFILE | Select-Object *
Du kan använda variabeln $PROFILE
i många kommandon. Följande kommando öppnar till exempel profilen "Aktuell användare, aktuell värd" i Anteckningar:
notepad $PROFILE
Följande kommando avgör om profilen "Alla användare, alla värdar" har skapats på den lokala datorn:
Test-Path -Path $PROFILE.AllUsersAllHosts
Så här skapar du en profil
Om du vill skapa en PowerShell-profil använder du följande kommandoformat:
if (!(Test-Path -Path <profile-name>)) {
New-Item -ItemType File -Path <profile-name> -Force
}
Om du till exempel vill skapa en profil för den aktuella användaren i det aktuella PowerShell-värdprogrammet använder du följande kommando:
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
I det här kommandot förhindrar instruktionen if
att du skriver över en befintlig profil. Ersätt värdet för variabeln $PROFILE
med sökvägen till profilfilen som du vill skapa.
Kommentar
Om du vill skapa profiler för alla användare i Windows Vista och senare versioner av Windows startar du PowerShell med alternativet Kör som administratör .
Redigera en profil
Du kan öppna valfri PowerShell-profil i en textredigerare, till exempel Anteckningar.
Om du vill öppna profilen för den aktuella användaren i det aktuella PowerShell-värdprogrammet i Anteckningar skriver du:
notepad $PROFILE
Om du vill öppna andra profiler anger du profilnamnet. Om du till exempel vill öppna profilen för alla användare av alla värdprogram skriver du:
notepad $PROFILE.AllUsersAllHosts
Om du vill tillämpa ändringarna sparar du profilfilen och startar sedan om PowerShell.
Så här väljer du en profil
Om du använder flera värdprogram placerar du de objekt som du använder i alla värdprogram i din $PROFILE.CurrentUserAllHosts
profil. Placera objekt som är specifika för ett värdprogram, till exempel ett kommando som anger bakgrundsfärgen för ett värdprogram, i en profil som är specifik för värdprogrammet.
Om du är administratör och anpassar PowerShell för många användare följer du dessa riktlinjer:
- Lagra de vanliga objekten i profilen
$PROFILE.AllUsersAllHosts
- Lagra objekt som är specifika för ett värdprogram i
$PROFILE.AllUsersCurrentHost
profiler som är specifika för värdprogrammet - Lagra objekt för vissa användare i de användarspecifika profilerna
Se till att kontrollera dokumentationen för värdprogrammet för eventuell särskild implementering av PowerShell-profiler.
Så här använder du en profil
Många av de objekt som du skapar i PowerShell och de flesta kommandon som du kör påverkar endast den aktuella sessionen. När du avslutar sessionen tas objekten bort.
Sessionsspecifika kommandon och objekt inkluderar PowerShell-variabler, miljövariabler, alias, funktioner, kommandon och PowerShell-moduler som du lägger till i sessionen.
Om du vill spara dessa objekt och göra dem tillgängliga i alla framtida sessioner lägger du till dem i en PowerShell-profil.
En annan vanlig användning för profiler är att spara funktioner, alias och variabler som används ofta. När du sparar objekten i en profil kan du använda dem i valfri session utan att återskapa dem.
Så här startar du en profil
När du öppnar profilfilen är den tom. Du kan dock fylla den med de variabler, alias och kommandon som du använder ofta.
Här följer några förslag för att komma igång.
Lägg till en funktion som visar en lista över alias för alla cmdletar
function Get-CmdletAlias ($cmdletname) {
Get-Alias |
Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
Format-Table -Property Definition, Name -AutoSize
}
Anpassa konsolen
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
Lägga till en anpassad PowerShell-prompt
function Prompt {
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}
Mer information om PowerShell-prompten finns i about_Prompts.
Andra profilexempel finns i Anpassa shell-miljön.
Parametern NoProfile
Om du vill starta PowerShell utan profiler använder du parametern powershell.exe
NoProfile för , programmet som startar PowerShell.
Börja med att öppna ett program som kan starta PowerShell, till exempel Cmd.exe eller Själva PowerShell. Du kan också använda dialogrutan Kör i Windows.
Ange:
powershell -NoProfile
Om du vill ha en fullständig lista över parametrarna för powershell.exe skriver du:
powershell -?
Profiler och körningsprincip
PowerShell-körningsprincipen avgör delvis om du kan köra skript och läsa in konfigurationsfiler, inklusive profilerna. Principen för begränsad körning är standard. Det förhindrar att alla skript körs, inklusive profilerna. Om du använder principen "Begränsad" körs inte profilen och dess innehåll tillämpas inte.
En Set-ExecutionPolicy
kommandouppsättning och ändrar din körningsprincip. det är ett av de få kommandon som gäller i alla PowerShell-sessioner eftersom värdet sparas i registret. Du behöver inte ange den när du öppnar konsolen och du behöver inte lagra ett Set-ExecutionPolicy
kommando i din profil.
Profiler och fjärrsessioner
PowerShell-profiler körs inte automatiskt i fjärrsessioner, så kommandona som profilerna lägger till finns inte i fjärrsessionen. Dessutom fylls inte den $PROFILE
automatiska variabeln i i fjärrsessioner.
Om du vill köra en profil i en session använder du cmdleten Invoke-Command .
Följande kommando kör till exempel profilen "Aktuell användare, Aktuell värd" från den lokala datorn i sessionen i $s
.
Invoke-Command -Session $s -FilePath $PROFILE
Följande kommando kör profilen "Aktuell användare, aktuell värd" från fjärrdatorn i sessionen i $s
. Eftersom variabeln $PROFILE
inte är ifylld använder kommandot den explicita sökvägen till profilen. Vi använder dot sourcing-operatorn så att profilen körs i det aktuella omfånget på fjärrdatorn och inte i sitt eget omfång.
Invoke-Command -Session $s -ScriptBlock {
. "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}
När du har kört det här kommandot är de kommandon som profilen lägger till i sessionen tillgängliga i $s
.