- 30/11/2017
- 7 minuter att läsa
-
- S
- s
- x
- q
- Kort beskrivning
- Lång beskrivning
- Profilfilfilerna
- Variabeln $PROFILE
- Hur man skapar en profil
- Hur du redigerar en profil
- Hur du väljer en profil
- Hur du använder en profil
- Hur du startar en profil
- Lägg till kommandon som gör det enkelt att öppna din profil
- Lägg till en funktion som listar alias för varje cmdlet
- Anpassa konsolen
- Lägg till en anpassad PowerShell-prompt
- Parametern NoProfile
- Profiler och exekveringspolicy
- Profiler och fjärrsessioner
- Se även
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 $PROFILE
variabeln.
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