• 30/11/2017
  • 7 minuter att läsa
    • S
    • s
    • x
    • q

Kort beskrivning

Beskriver hur man 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 till 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 PowerShelldrives. Du kan också lägga till andra sessionsspecifika element i profilen så att de finns tillgängliga i varje session utan att du behöver importera eller skapa dem på nytt.

PowerShell har stöd för flera profiler för användare och värdprogram. Den skapar dock inte profilerna åt dig. I det här avsnittet beskrivs profilerna och hur du skapar och underhåller profiler på din dator.

Det förklaras hur du använder NoProfile-parametern i PowerShell-konsolen (PowerShell.exe) för att starta PowerShell utan några profiler. Dessutom förklaras effekten av PowerShells exekveringspolicy på profiler.

Profilfilfilerna

PowerShell har stöd för flera profilfiler. Dessutom kan PowerShell-värdprogrammen stödja sina egna värdspecifika profiler.

PowerShell-konsolen har till exempel stöd för följande grundläggande profilfiler. Profilerna listas i prioritetsordning. Den första profilen har högsta prioritet.

Beskrivning Sökväg
Alla användare, alla värdar $PSHOME\Profile.ps1
Alla användare, nuvarande värd $PSHOME\Microsoft.PowerShell_profile.ps1
Aktuell användare, alla värdar $Home\Documents\PowerShell\Profile.ps1
Aktuell användare, aktuell värd $Home\Documents\PowerShell\
Microsoft.PowerShell_profile.ps1

Profilens sökvägar inkluderar följande variabler:

  • Variabeln $PSHOME, som lagrar installationskatalogen förPowerShell
  • Variabeln $Home, som lagrar den aktuella användarens hemkatalog

Därutöver kan andra program som är värdar för PowerShell ha stöd för sina egna profiler. Visual Studio Code har till exempel stöd för följande värdspecifika profiler:

Description Path
Alla användare, Current Host $PSHOME\Microsoft.VSCode_profile.ps1
Aktuell användare, aktuell värd $Home\Documents\PowerShell\
Microsoft.VSCode_profile.ps1

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

Variabeln $PROFILE

Den automatiska variabeln $PROFILE lagrar sökvägarna till de PowerShell-profiler som finns tillgängliga i den aktuella sessionen.

Om du vill se en profilsökväg visar du värdet på variabeln $PROFILE. Du kan också använda $PROFILE-variabeln i ett kommando för att representera en sökväg.

Variabeln $PROFILE lagrar sökvägen till profilen ”Current User, Current Host”. De andra profilerna sparas i anteckningsegenskaper för $PROFILEvariabeln.

Variabeln $PROFILE har till exempel följande värden i WindowsPowerShell-konsolen.

Beskrivning Namn
Aktuell användare, aktuell värd $PROFILE
Aktuell användare, Current Host $PROFILE.CurrentUserCurrentHost
Current User, All Hosts $PROFILE.CurrentUserAllHosts
All Users, Current Host $PROFILE.AllUsersCurrentHost
All Users, All Hosts $PROFILE.AllUsersAllHosts

Om värdet av variabeln $PROFILE ändras för varje användare och i varje värdprogram, ska du se till att du visar profilvariablernas värden i varje PowerShell-värdprogram som du använder.

För att se de aktuella värdena för $PROFILE-variabeln skriver du:

$PROFILE | Get-Member -Type NoteProperty

Du kan använda $PROFILE-variabeln i många kommandon. Följande kommando öppnar till exempel profilen ”Current User, Current Host” i Notepad:

notepad $PROFILE

Följande kommando fastställer om en profil ”All Users, All Hosts” har skapats på den lokala datorn:

Test-Path -Path $PROFILE.AllUsersAllHosts

Hur man skapar en profil

För att skapa en PowerShell-profil använder du följande kommandoformat:

if (!(Test-Path -Path <profile-name>)) { New-Item -ItemType File -Path <profile-name> -Force}

För att till exempel 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 If-angivelsen att du skriver över en befintlig profil. Ersätt värdet av platshållaren <profile-path> med sökvägen till den profilfil som du vill skapa.

Notis

Om du vill skapa profiler för ”Alla användare” i Windows Vista och senare versioner avWindows startar du PowerShell med alternativet Kör som administratör.

Hur du redigerar en profil

Du kan öppna alla PowerShell-profiler i en textredigerare, t.ex. Anteckningsblock.

Om du vill öppna profilen för den aktuella användaren i det aktuella PowerShell-värdprogrammet i Anteckningsblock skriver du:

notepad $PROFILE

Om du vill öppna andra profiler anger du profilens namn. Om du till exempel vill öppna profilen för alla användare i alla värdprogram skriver du:

notepad $PROFILE.AllUsersAllHosts

Om du vill tillämpa ändringarna sparar du profilfilen och startar sedan om PowerShell.

Hur du väljer en profil

Om du använder flera värdprogram lägger du de objekt som du använder i alla värdprogrammen i din $PROFILE.CurrentUserAllHosts-profil. Lägg objekt som är specifika för ett värdprogram, t.ex. ett kommando som ställer in bakgrundsfärgen för ett värdprogram, i en profil som är specifik för det värdprogrammet.

Om du är en administratör som anpassar PowerShell för många användare ska du följa de här riktlinjerna:

  • Lagra gemensamma objekt i $PROFILE.AllUsersAllHosts-profilen
  • 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 särskilda användare i användarspecifika profiler

Se till att kontrollera dokumentationen för värdprogrammet om det finns någon särskild implementering av PowerShell-profiler.

Hur du använder 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 raderas objekten.

De sessionsspecifika kommandona och objekten omfattar variabler, preferensvariabler, alias, funktioner, kommandon (utomSet-ExecutionPolicy) och PowerShell-moduler som du lägger till i sessionen.

Om du vill spara de här objekten och göra dem tillgängliga i alla framtida sessioner, lägger du till dem i en PowerShell-profil.

Ett annat vanligt användningsområde för profiler är att spara ofta använda funktioner, alias och variabler. När du sparar objekten i en profil kan du använda dem i alla tillämpliga sessioner utan att återskapa dem.

Hur du startar en profil

När du öppnar profilfilen är den tom. Du kan dock fylla den med de variabler, alias och kommandon som du ofta använder.

Här är några förslag för att komma igång.

Lägg till kommandon som gör det enkelt att öppna din profil

Det här är särskilt användbart om du använder en annan profil än profilen ”Current User,Current Host”. Lägg till exempel till följande kommando:

function Pro {notepad $PROFILE.CurrentUserAllHosts}

Lägg till en funktion som listar alias för varje cmdlet

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ägg till en anpassad PowerShell-prompt

function Prompt{$env:COMPUTERNAME + "\" + (Get-Location) + "> "}

För mer information om PowerShell-prompten, seom_Prompts.

Parametern NoProfile

För att starta PowerShell utan profiler använder du parametern NoProfile iPowerShell.exe, programmet som startar PowerShell.

För att börja öppnar du ett program som kan starta PowerShell, t.ex. Cmd.exe ellerPowerShell själv. Du kan också använda dialogrutan Kör i Windows.

Typ:

PowerShell -NoProfile

För en fullständig lista över parametrarna för PowerShell.exe skriver du:

PowerShell -?

Profiler och exekveringspolicy

Exekveringspolicyn för PowerShell avgör delvis om du kan köra skript och läsa in konfigurationsfiler, inklusive profiler. Principen Restrictedexecution är standardinställningen. Den förhindrar att alla skript körs, inklusive profilerna. Om du använder principen ”Restricted” körs inte profilen och dess innehåll tillämpas inte.

Ett Set-ExecutionPolicy-kommando anger och ändrar din exekveringsprincip. Det är ett av de få kommandon som gäller i alla PowerShell-sessioner eftersom värdet sparas i registret. Du behöver inte ställa in det när du öppnar konsolen och du behöver inte lagra ett Set-ExecutionPolicy-kommando i dinprofil.

Profiler och fjärrsessioner

PowerShell-profiler körs inte automatiskt i fjärrsessioner, så dekommandon som profilerna lägger till finns inte i fjärrsessionen. Dessutom fylls inte den automatiska variabeln $PROFILE i fjärrsessioner.

Om du vill köra en profil i en session använder du handlingen Invoke-Commandcmdlet.

Till exempel körs följande kommando profilen ”Current user, Current Host” från den lokala datorn i sessionen i $s.

Invoke-Command -Session $s -FilePath $PROFILE

Följande kommando kör profilen ”Current user, Current Host” från den 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 dotsourcing-operatorn så att profilen exekveras i det aktuella scope på den fjärrstyrda datorn och inte i sitt eget scope.

Invoke-Command -Session $s -ScriptBlock { . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}

När det här kommandot har körts är de kommandon som profilen lägger till i sessionen tillgängliga i $s.

Se även

om_automatiska_variabler

om_funktioner

om_avbrott

om_utföranden

om_utförandepolicyer

om_signering

om_fjärrstyrning

om_om_områdesområden

sätt-utförandet-politik

Lämna ett svar

Din e-postadress kommer inte publiceras.