I den här handledningen kommer vi att lära oss mer om PowerShell Profiler och hur de används. PowerShell-profiler hjälper dig att anpassa din miljö och lägga till element för varje PowerShell-session som du startar. PowerShell-profilen är ett skript som körs varje gång vi kommer att starta PowerShell. Du kan använda en PowerShell-profil som ett inloggningsskript för att anpassa miljön. Genom att använda en PowerShell-profil kan du lägga till kommandon, alias, funktioner, variabler, snap-ins, moduler, PSDrives och andra sessionsspecifika element i din evnironmet. Du behöver inte importera eller skapa dem på nytt varje gång du kör PowerShell. De kommer att laddas automatiskt. PowerShell stöder flera profiler för användare och värdprogram. PowerShell skapar inga profiler åt dig.
Om du vill ha sessionsspecifika kommandon, variabler, preferensvariabler, alias, funktioner, kommandon (utom Set-ExecutionPolicy) och PowerShell-moduler som du använder ofta, kan du använda profiler för att ladda i alla framtida sessioner.
Profilfiler
PowerShell-konsolen stöder följande profiler:
-
$Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
– Aktuell användare, aktuell värd -
$Home\Documents\PowerShell\Profile.ps1
– Aktuell användare, alla värdar -
$PsHome\Microsoft.PowerShell_profile.ps1
– Alla användare, aktuell värd -
$PsHome\Profile.ps1
– Alla användare, alla värdar
Profilerna ovan visas i prioritetsordning. Den första profilen i listan har den högsta prioritetsordningen. Som du kan se i profilerna ovan har vi två variabler. Variablerna $PSHome
och $Home
presenterar följande värden:
-
$PSHome
– Lagrar installationskatalogen för PowerShell -
$Home
– Lagrar den aktuella användarens hemkatalog
Andra program som är värd för PowerShell kan ha stöd för sina egna profiler. PowerShell Integrated Scripting Environment (ISE) har stöd för följande värdspecifika profiler:
-
$Home\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
– Aktuell användare, aktuell värd -
$PsHome\Microsoft.PowerShellISE_profile.ps1
– Alla användare, aktuell värd
Enligt Microsoft, i PowerShell-hjälpen, är profilen ”CurrentUser, Current Host” den profil som oftast kallas för ”din PowerShell-profil”.
Profilvariabel
I PowerShell har vi en automatisk variabel som heter $Profile
. Alla PowerShell-profilsökvägar som är tillgängliga i den aktuella sessionen lagras i $Profile
-variabeln. Genom att visa $Profile
-variabeln kan du se sökvägen till profilen.
Variabeln $Profile
lagrar sökvägen till profilen ”Current User, Current Host”. De andra profilerna sparas i anteckningsegenskaper för variabeln $Profile
.
Du kan ange en profil med hjälp av egenskaperna för variabeln. I Windows PowerShell Console har vi följande värden i variabeln $Profile
.
-
$Profile
– Aktuell användare, aktuell värd -
$Profile.CurrentUserCurrentHost
– Aktuell användare, aktuell värd -
$Profile.CurrentUserAllHosts
– Aktuell användare, alla värdar -
$Profile.AllUsersCurrentHost
– Alla användare, aktuell värd -
$Profile.AllUsersAllHosts
– Alla användare, alla värdar
Du kan använda variabeln $Profile
i dina kommandon.
Kod:
Test-Path -Path $PROFILETest-Path -Path $PROFILE.CurrentUserCurrentHostTest-Path -Path $PROFILE.CurrentUserAllHostsTest-Path -Path $PROFILE.AllUsersCurrentHostTest-Path -Path $PROFILE.AllUsersAllHosts
Output:
Ovanstående kommandon testar om den angivna profilen har skapats. Som du kan se är svaret falskt för alla. Som du vi har nämnt tidigare skapas profiler inte som standard. Du måste skapa dem.
Skapa en profil
För att skapa en profil måste du använda följande kommando.
Kod:
New-Item -ItemType File -Path $profile -Force
Ovanstående kommando kommer att skapa en profil för ”Current User, Current Host”.
Bemärk att ovanstående kommando kommer att ersätta alla befintliga profiler. Om du vill försäkra dig om att du inte ersätter en profil som redan finns och att du inte förlorar de ändringar som du redan har tillämpat kan du försöka med nedanstående.
Kod:
if (-not (Test-Path -Path $profile.AllUsersAllHosts)){ New-Item -ItemType File -Path $profile.AllUsersAllHosts -Force}
Ovanstående kommando kontrollerar om det finns en profil för ”Alla användare, alla värdar” och om den inte finns kommer profilen att skapas.
För att kunna skapa en profil måste du köra PowerShell-konsolen som administratör. Detta gäller från Windows Vista och senare versioner.
Redigera en profil
Om en profil finns och du behöver göra några ändringar eller tillägg måste du använda en textredigerare för att redigera profilen. Genom att använda Anteckningsblock är ett enkelt sätt att redigera profilen.
Kod:
notepad $profile
Som du kan se nedan är min nuvarande profil konfigurerad för att ge ett välkomstmeddelande när jag öppnar min konsol.
Nu kommer jag att använda ovanstående kommando för att tillämpa några ändringar i min profil.
Nedan följer de ändringar som jag har tillämpat.
När jag sedan har startat om PowerShell-konsolen har ändringarna tillämpats, som du kan se.
Riktlinjer för profiler
Nedan kommer jag att ge dig några riktlinjer för hur du ställer in dina profiler, enligt vad Microsoft tillhandahåller.
Om du använder flera värdprogram lägger du in 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 anger 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 de gemensamma objekten 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 värdprogrammets dokumentation om det finns någon särskild implementering av PowerShell-profiler.
Ingen profil
Även om du har skapat profiler som ska laddas varje gång du öppnar konsolen får du köra PowerShell utan att någon profil ska laddas. Du kan göra detta genom att köra PowerShell med parametern -NoProfile
. Detta kan göras från cmd.exe, dialogrutan Kör eller PowerShell själv.
Kod:
PowerShell -NoProfile
Exekveringspolicy
PowerShells exekveringspolicy avgör om du kan köra skript och ladda konfigurationsfiler, inklusive profiler. Exekveringsprincipen ”Restricted” är standardinställningen. Du hittar mer information om PowerShell-exekveringspolicy här. Om du använder principen ”Restricted” förhindrar den att alla skript körs, inklusive profilerna. Innehållet i profilen tillämpas inte. Ett Set-ExecutionPolicy
-kommando ställer in och ändrar din exekveringspolicy i alla PowerShell-sessioner eftersom värdet sparas i registret. Du behöver inte ställa in det när du öppnar konsolen eller lagra ett Set-ExecutionPolicy
-kommando i din profil.
Profil i fjärrsession
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 automatiska variabeln $Profile
i fjärrsessioner.
Om vi vill köra profilen från vår lokala dator, till en fjärrsession, måste vi använda Invoke-Command
cmdlet.
Exemplet nedan kör den lokala profilen till en fjärrsession.
Kod:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -FilePath $profile
Output:
Då profilen inte kommer att fyllas på i fjärrsessionen kan vi också ladda fjärrprofilen i sessionen. Kolla nedanstående exempel.
Code:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -ScriptBlock {. "$env:USERPROFILE\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Output:
Jag hoppas att handledningen om PowerShell-profiler är till hjälp.
Låt mig veta dina kommentarer och tankar.
Din feedback uppskattas.
Relaterade länkar
- PowerShell-handledning
- PowerShell-scripts
- about_Profiles | Microsoft Docs
- PowerShell automatiska variabler
- PowerShell logiska operatörer
- PowerShell exekveringspolicy
- Test-Path – Microsoft Docs
- Nytt-Item – Microsoft Docs
- Write-Output – Microsoft Docs
- Set-ExecutionPolicy – Microsoft Docs
- Invoke-Command – Microsoft Docs