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
    • Windows – $PSHOME\Profile.ps1
    • Linux – /opt/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 – /opt/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\Documents\PowerShell\Profile.ps1
    • Linux – ~/.config/powershell/profile.ps1
    • macOS – ~/.config/powershell/profile.ps1
  • Aktuell användare, aktuell värd
    • Windows – $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    • Linux – ~/.config/powershell/Microsoft.PowerShell_profile.ps1
    • macOS – ~/.config/powershell/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\pwsh.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 pwsh.exeNoProfile 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:

pwsh -NoProfile

Om du vill ha en fullständig lista över parametrarna för pwsh.exeskriver du:

pwsh -?

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.

Se även