about_Profiles

Korte beschrijving

Hierin wordt beschreven hoe u een PowerShell-profiel maakt en gebruikt.

Lange beschrijving

U kunt een PowerShell-profiel maken om uw omgeving aan te passen en sessiespecifieke elementen toe te voegen aan elke PowerShell-sessie die u start.

Een PowerShell-profiel is een script dat wordt uitgevoerd wanneer PowerShell wordt gestart. U kunt het profiel gebruiken als opstartscript om uw omgeving aan te passen. U kunt opdrachten, aliassen, functies, variabelen, modules, PowerShell-stations en meer toevoegen. U kunt ook andere sessiespecifieke elementen toevoegen aan uw profiel, zodat deze in elke sessie beschikbaar zijn zonder ze te hoeven importeren of opnieuw te maken.

PowerShell ondersteunt verschillende profielen voor gebruikers en hostprogramma's. Er worden echter geen profielen voor u gemaakt.

Profieltypen en -locaties

PowerShell ondersteunt verschillende profielbestanden die zijn afgestemd op gebruikers en PowerShell-hosts. U kunt een of al deze profielen op uw computer hebben.

De PowerShell-console ondersteunt de volgende basisprofielbestanden. Deze bestandspaden zijn de standaardlocaties.

  • Alle gebruikers, alle hosts
    • Windows - $PSHOME\Profile.ps1
    • Linux - /opt/microsoft/powershell/7/profile.ps1
    • macOS - /usr/local/microsoft/powershell/7/profile.ps1
  • Alle gebruikers, huidige host
    • 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
  • Huidige gebruiker, alle hosts
    • Windows - $HOME\Documents\PowerShell\Profile.ps1
    • Linux - ~/.config/powershell/profile.ps1
    • macOS - ~/.config/powershell/profile.ps1
  • Huidige gebruiker, huidige host
    • Windows - $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    • Linux - ~/.config/powershell/Microsoft.PowerShell_profile.ps1
    • macOS - ~/.config/powershell/Microsoft.PowerShell_profile.ps1

Notitie

In Windows kan de locatie van de Documents map worden gewijzigd door mapomleiding of OneDrive. Het wordt afgeraden om de Documents map om te leiden naar een netwerkshare of om deze op te halen in OneDrive. Als u de map omleidt, kunnen modules niet worden geladen en fouten in uw profielscripts worden gemaakt. Raadpleeg de OneDrive-documentatie voor informatie over het verwijderen van de Documents map uit OneDrive-beheer.

De profielscripts worden uitgevoerd in de vermelde volgorde. Dit betekent dat wijzigingen in het AllUsersAllHosts-profiel kunnen worden overschreven door een van de andere profielscripts . Het CurrentUserCurrentHost-profiel wordt altijd laatst uitgevoerd. In PowerShell Help is het CurrentUserCurrentHost-profiel het profiel dat het vaakst wordt aangeduid als uw PowerShell-profiel.

Andere programma's die PowerShell hosten, kunnen hun eigen profielen ondersteunen. Visual Studio Code (VS Code) ondersteunt bijvoorbeeld de volgende hostspecifieke profielen.

  • Alle gebruikers, huidige host - $PSHOME\Microsoft.VSCode_profile.ps1
  • Huidige gebruiker, Huidige host - $HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1

De profielpaden bevatten de volgende variabelen:

  • De $PSHOME variabele slaat de installatiemap voor PowerShell op
  • De $HOME variabele slaat de basismap van de huidige gebruiker op

De variabele $PROFILE

De $PROFILE automatische variabele slaat de paden op naar de PowerShell-profielen die beschikbaar zijn in de huidige sessie.

Als u een profielpad wilt weergeven, geeft u de waarde van de $PROFILE variabele weer. U kunt de $PROFILE variabele ook gebruiken in een opdracht om een pad weer te geven.

De $PROFILE variabele slaat het pad op naar het profiel Huidige gebruiker, huidige host. De andere profielen worden opgeslagen in notitie-eigenschappen van de $PROFILE variabele.

De $PROFILE variabele heeft bijvoorbeeld de volgende waarden in de Windows PowerShell-console.

  • Huidige gebruiker, huidige host - $PROFILE
  • Huidige gebruiker, huidige host - $PROFILE.CurrentUserCurrentHost
  • Huidige gebruiker, alle hosts - $PROFILE.CurrentUserAllHosts
  • Alle gebruikers, huidige host - $PROFILE.AllUsersCurrentHost
  • Alle gebruikers, alle hosts - $PROFILE.AllUsersAllHosts

Omdat de waarden van de $PROFILE variabele voor elke gebruiker en in elke hosttoepassing veranderen, moet u ervoor zorgen dat u de waarden van de profielvariabelen weergeeft in elke PowerShell-hosttoepassing die u gebruikt.

Als u de huidige waarden van de $PROFILE variabele wilt zien, typt u:

$PROFILE | Select-Object *

U kunt de $PROFILE variabele in veel opdrachten gebruiken. Met de volgende opdracht wordt bijvoorbeeld het profiel Huidige gebruiker, huidige host geopend in Kladblok:

notepad $PROFILE

Met de volgende opdracht wordt bepaald of er een profiel voor alle gebruikers, alle hosts is gemaakt op de lokale computer:

Test-Path -Path $PROFILE.AllUsersAllHosts

Een profiel maken

Gebruik de volgende opdrachtindeling om een PowerShell-profiel te maken:

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

Als u bijvoorbeeld een profiel wilt maken voor de huidige gebruiker in de huidige PowerShell-hosttoepassing, gebruikt u de volgende opdracht:

if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}

In deze opdracht voorkomt u dat u een bestaand profiel overschrijft met de if instructie. Vervang de waarde van de $PROFILE variabele door het pad naar het profielbestand dat u wilt maken.

Notitie

Als u profielen voor alle gebruikers wilt maken in Windows Vista en latere versies van Windows, start u PowerShell met de optie Als administrator uitvoeren .

Een profiel bewerken

U kunt elk PowerShell-profiel openen in een teksteditor, zoals Kladblok.

Als u het profiel van de huidige gebruiker in de huidige PowerShell-hosttoepassing in Kladblok wilt openen, typt u:

notepad $PROFILE

Als u andere profielen wilt openen, geeft u de profielnaam op. Als u bijvoorbeeld het profiel wilt openen voor alle gebruikers van alle hosttoepassingen, typt u:

notepad $PROFILE.AllUsersAllHosts

Als u de wijzigingen wilt toepassen, slaat u het profielbestand op en start u PowerShell opnieuw.

Een profiel kiezen

Als u meerdere hosttoepassingen gebruikt, plaatst u de items die u in alle hosttoepassingen in uw $PROFILE.CurrentUserAllHosts profiel gebruikt. Plaats items die specifiek zijn voor een hosttoepassing, zoals een opdracht waarmee de achtergrondkleur voor een hosttoepassing wordt ingesteld, in een profiel dat specifiek is voor die hosttoepassing.

Als u een beheerder bent die PowerShell voor veel gebruikers aanwijst, volgt u deze richtlijnen:

  • De algemene items in het $PROFILE.AllUsersAllHosts profiel opslaan
  • Items opslaan die specifiek zijn voor een hosttoepassing in $PROFILE.AllUsersCurrentHost profielen die specifiek zijn voor de hosttoepassing
  • Items opslaan voor bepaalde gebruikers in de gebruikersspecifieke profielen

Controleer de documentatie van de hosttoepassing voor een speciale implementatie van PowerShell-profielen.

Een profiel gebruiken

Veel van de items die u maakt in PowerShell en de meeste opdrachten die u uitvoert, zijn alleen van invloed op de huidige sessie. Wanneer u de sessie beëindigt, worden de items verwijderd.

De sessiespecifieke opdrachten en items omvatten PowerShell-variabelen, omgevingsvariabelen, aliassen, functies, opdrachten en PowerShell-modules die u aan de sessie toevoegt.

Als u deze items wilt opslaan en beschikbaar wilt maken in alle toekomstige sessies, voegt u deze toe aan een PowerShell-profiel.

Een ander veelvoorkomend gebruik voor profielen is het opslaan van veelgebruikte functies, aliassen en variabelen. Wanneer u de items in een profiel opslaat, kunt u ze in elke toepasselijke sessie gebruiken zonder ze opnieuw te maken.

Een profiel starten

Wanneer u het profielbestand opent, is het leeg. U kunt deze echter vullen met de variabelen, aliassen en opdrachten die u vaak gebruikt.

Hier volgen enkele suggesties om u op weg te helpen.

Een functie toevoegen waarin aliassen voor een cmdlet worden vermeld

function Get-CmdletAlias ($cmdletname) {
  Get-Alias |
    Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
      Format-Table -Property Definition, Name -AutoSize
}

Uw console aanpassen

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

Een aangepaste PowerShell-prompt toevoegen

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

Zie about_Prompts voor meer informatie over de PowerShell-prompt.

Zie Uw shell-omgeving aanpassen voor andere profielvoorbeelden.

De parameter NoProfile

Als u PowerShell zonder profielen wilt starten, gebruikt u de parameter NoProfile van pwsh.exe, het programma waarmee PowerShell wordt gestart.

Open eerst een programma waarmee PowerShell kan worden gestart, zoals Cmd.exe of PowerShell zelf. U kunt ook het dialoogvenster Uitvoeren in Windows gebruiken.

Type:

pwsh -NoProfile

Voor een volledige lijst met de parameters van pwsh.exe, typt u:

pwsh -?

Profielen en uitvoeringsbeleid

Het PowerShell-uitvoeringsbeleid bepaalt, gedeeltelijk, of u scripts kunt uitvoeren en configuratiebestanden kunt laden, inclusief de profielen. Het beleid voor beperkte uitvoering is de standaardinstelling. Hiermee voorkomt u dat alle scripts worden uitgevoerd, inclusief de profielen. Als u het beleid 'Beperkt' gebruikt, wordt het profiel niet uitgevoerd en wordt de inhoud ervan niet toegepast.

Met een Set-ExecutionPolicy opdracht wordt uw uitvoeringsbeleid ingesteld en gewijzigd. dit is een van de weinige opdrachten die van toepassing zijn in alle PowerShell-sessies omdat de waarde wordt opgeslagen in het register. U hoeft deze niet in te stellen wanneer u de console opent en u hoeft geen opdracht op te slaan Set-ExecutionPolicy in uw profiel.

Profielen en externe sessies

PowerShell-profielen worden niet automatisch uitgevoerd in externe sessies, dus de opdrachten die de profielen toevoegen, zijn niet aanwezig in de externe sessie. Bovendien wordt de $PROFILE automatische variabele niet ingevuld in externe sessies.

Als u een profiel in een sessie wilt uitvoeren, gebruikt u de cmdlet Invoke-Command .

Met de volgende opdracht wordt bijvoorbeeld het profiel Huidige gebruiker, Huidige host uitgevoerd vanaf de lokale computer in de sessie in $s.

Invoke-Command -Session $s -FilePath $PROFILE

Met de volgende opdracht wordt het profiel Huidige gebruiker, Huidige host uitgevoerd vanaf de externe computer in de sessie in $s. Omdat de $PROFILE variabele niet is ingevuld, gebruikt de opdracht het expliciete pad naar het profiel. We gebruiken dot sourcing operator zodat het profiel wordt uitgevoerd in het huidige bereik op de externe computer en niet in een eigen bereik.

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

Nadat u deze opdracht hebt uitgevoerd, zijn de opdrachten die het profiel toevoegt aan de sessie beschikbaar in $s.

Zie ook