Om profiler
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 inloggningsskript för att anpassa miljön. Du kan lägga till kommandon, alias, funktioner, variabler, snapin-moduler, moduler och PowerShell-enheter. 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. Det skapar dock inte profilerna åt dig. Det här avsnittet beskriver profilerna och beskriver hur du skapar och underhåller profiler på datorn.
Den förklarar hur du använder parametern NoProfile i PowerShell-konsolen (PowerShell.exe) för att starta PowerShell utan några profiler. Dessutom förklaras effekten av PowerShell-körningsprincipen på profiler.
Profilfilerna
PowerShell stöder flera profilfiler. Dessutom kan PowerShell-värdprogram stödja sina egna värdspecifika profiler.
PowerShell-konsolen stöder till exempel följande grundläggande profilfiler. Profilerna visas i prioritetsordning. Den första profilen har högst prioritet.
Description | Sökväg |
---|---|
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\[My ]Documents\WindowsPowerShell\Profile.ps1 |
Aktuell användare, aktuell värd | $Home\[Mina ]dokument\WindowsPowerShell\ Microsoft.PowerShell_profile.ps1 |
Profilsökvägarna innehåller följande variabler:
- Variabeln
$PSHOME
som lagrar installationskatalogen för PowerShell - Variabeln
$Home
som lagrar den aktuella användarens hemkatalog
Dessutom kan andra program som är värdar för PowerShell stödja sina egna profiler. Till exempel stöder PowerShell Integrated Scripting Environment (ISE) följande värdspecifika profiler.
Description | Sökväg |
---|---|
Alla användare, aktuell värd | $PSHOME\Microsoft.PowerShellISE_profile.ps1 |
Aktuell användare, aktuell värd | $Home\[Mina ]dokument\WindowsPowerShell\ Microsoft.PowerShellISE_profile.ps1 |
I PowerShell-hjälpen är profilen "CurrentUser, Current Host" den profil som oftast kallas "din PowerShell-profil".
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.
Beskrivning | Name |
---|---|
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 de aktuella värdena för variabeln $PROFILE
skriver du:
$PROFILE | Get-Member -Type NoteProperty
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 hindrar if-instruktionen dig från att skriva över en befintlig profil. Ersätt värdet för <platshållaren för profilsökvägen> med sökvägen till profilfilen som du vill skapa.
Anteckning
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 en administratör som anpassar PowerShell för många användare följer du dessa riktlinjer:
- Lagra vanliga objekt 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 användarspecifika profiler
Se till att kontrollera dokumentationen för värdprogram 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 omfattar variabler, inställningsvariabler, alias, funktioner, kommandon (förutom Set-ExecutionPolicy) 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 kommandon som gör det enkelt att öppna din profil
Detta är särskilt användbart om du använder en annan profil än profilen "Aktuell användare, Aktuell värd". Lägg till exempel till följande kommando:
function Pro {notepad $PROFILE.CurrentUserAllHosts}
Lägg till en funktion som visar 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 Color-Console {
$Host.ui.rawui.backgroundcolor = "white"
$Host.ui.rawui.foregroundcolor = "black"
$hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
Clear-Host
}
Color-Console
Lägga till en anpassad PowerShell-prompt
function Prompt
{
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}
Mer information om PowerShell-prompten finns i about_Prompts.
Parametern NoProfile
Om du vill starta PowerShell utan profiler använder du parametern NoProfile förPowerShell.exe, 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.
Ett Set-ExecutionPolicy
kommando anger 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 det 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å de kommandon 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 dess 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
.