PowerShell Profiler

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.CurrentUserAllHostsprofil. 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
Summary
Article Name
PowerShell Profiles
Description
PowerShell Profiles. I den här handledningen hittar du information om PowerShell-profiler och hur de används. Stephanos Constantinou Blog
Författare
Stephanos
Förlagsnamn
Stephanos Constantinou Blog
Förlagslogo

Lämna ett svar

Din e-postadress kommer inte publiceras.