Dela via


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 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. Men profilerna skapas inte å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 Windows – $PSHOME\Profile.ps1
Linux – /usr/local/microsoft/powershell/7/profile.ps1
macOS – /usr/local/microsoft/powershell/7/profile.ps1
Alla användare, aktuell värd Windows – $PSHOME\Microsoft.PowerShell_profile.ps1
Linux – /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
macOS – /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
Aktuell användare, alla värdar Windows – $Home\[My ]Documents\PowerShell\Profile.ps1
Linux – ~/.config/powershell/profile.ps1
macOS – ~/.config/powershell/profile.ps1
Aktuell användare, aktuell värd Windows – $Home\[My ]Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Linux – ~/.config/powershell/Microsoft.Powershell_profile.ps1
macOS – ~/.config/powershell/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. Visual Studio Code stöder till exempel följande värdspecifika profiler.

Description Sökväg
Alla användare, aktuell värd $PSHOME\Microsoft.VSCode_profile.ps1
Aktuell användare, aktuell värd $Home\[Mina ]dokument\PowerShell\
Microsoft.VSCode_profile.ps1

I PowerShell-hjälpen är profilen "CurrentUser, Current Host" den profil som oftast kallas "din PowerShell-profil".

Anteckning

I Windows kan platsen för mappen Dokument ändras genom mappomdirigering eller OneDrive. Vi rekommenderar inte att du omdirigerar mappen Dokument till en nätverksresurs eller inkluderar den i OneDrive. Om du omdirigerar mappen kan dina profilskript misslyckas och modulerna kan inte läsas in.

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 ska du se till 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 instruktionen If dig från att skriva över en befintlig profil. Ersätt värdet för <platshållaren profile-path> med sökvägen till den profilfil 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 .

Så här redigerar du 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 de användarspecifika profilerna

Se till att läsa 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 bara 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 körningsprincipen. 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 punktkällor 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.

Se även