about_Profiles

Korte beschrijving

Beschrijft 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 aanmeldingsscript om de omgeving aan te passen. U kunt opdrachten, aliassen, functies, variabelen, modules, modules en PowerShell-stations toevoegen. U kunt ook andere sessiespecifieke elementen toevoegen aan uw profiel, zodat ze in elke sessie beschikbaar zijn zonder dat u ze moet importeren of opnieuw moet maken.

PowerShell ondersteunt verschillende profielen voor gebruikers en hostprogramma's. De profielen worden echter niet voor u gemaakt. In dit onderwerp worden de profielen beschreven en wordt beschreven hoe u profielen op uw computer maakt en onderhoudt.

In dit artikel wordt uitgelegd hoe u de parameter NoProfile van de PowerShell-console (PowerShell.exe) gebruikt om PowerShell zonder profielen te starten. Ook wordt het effect van het PowerShell-uitvoeringsbeleid op profielen uitgelegd.

De profielbestanden

PowerShell ondersteunt verschillende profielbestanden. Bovendien kunnen PowerShell-hostprogramma's hun eigen hostspecifieke profielen ondersteunen.

De PowerShell-console ondersteunt bijvoorbeeld de volgende basisprofielbestanden. De profielen worden weergegeven in volgorde van prioriteit. Het eerste profiel heeft de hoogste prioriteit.

Description Pad
Alle gebruikers, alle hosts Windows : $PSHOME\Profile.ps1
Linux - /usr/local/microsoft/powershell/7/profile.ps1
macOS - /usr/local/microsoft/powershell/7/profile.ps1
Alle gebruikers, huidige host Windows : $PSHOME\Microsoft.PowerShell_profile.ps1
Linux - /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
macOS - /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
Huidige gebruiker, alle hosts Windows - $Home\[Mijn ]DocumentenPowerShell\\-Profile.ps1
Linux - ~/.config/powershell/profile.ps1
macOS - ~/.config/powershell/profile.ps1
Huidige gebruiker, huidige host Windows - $Home\[Mijn ]DocumentenPowerShell\\-Microsoft.PowerShell_profile.ps1
Linux - ~/.config/powershell/Microsoft.Powershell_profile.ps1
macOS - ~/.config/powershell/Microsoft.Powershell_profile.ps1

De profielpaden bevatten de volgende variabelen:

  • De $PSHOME variabele, die de installatiemap voor PowerShell op slaat
  • De $Home variabele, waarin de basismap van de huidige gebruiker wordt op basis van

Daarnaast kunnen andere programma's die PowerShell hosten hun eigen profielen ondersteunen. Zo ondersteunt Visual Studio code de volgende hostspecifieke profielen.

Description Pad
Alle gebruikers, huidige host \ $PSHOMEMicrosoft.VSCode_profile.ps1
Huidige gebruiker, huidige host \$Home[Mijn ]DocumentenPowerShell\\
Microsoft.VSCode_profile.ps1

In PowerShell Help is het profiel CurrentUser, Current Host het profiel dat het meest wordt aangeduid als 'uw PowerShell-profiel'.

Notitie

In Windows kan de locatie van de map Documenten worden gewijzigd door mapomleiding of OneDrive. Het is niet raadzaam om de map Documenten om te leiden naar een netwerk share of deze op te OneDrive. Het omleiden van de map kan ertoe leiden dat uw profielscripts mislukken en dat modules niet kunnen worden geladen.

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 variabele $PROFILE weer. U kunt ook de variabele $PROFILE in een opdracht gebruiken 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 de notitie-eigenschappen van de $PROFILE variabele.

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

Beschrijving Name
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 we weergeven in elke PowerShell-hosttoepassing die u gebruikt.

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

$PROFILE | Get-Member -Type NoteProperty

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

notepad $PROFILE

Met de volgende opdracht wordt bepaald of het profiel 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 de instructie If dat u een bestaand profiel overschrijft. Vervang de waarde van de tijdelijke <profile-path> aanduiding door het pad naar het profielbestand dat u wilt maken.

Notitie

Als u alle gebruikersprofielen 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 wilt openen van het profiel van de huidige gebruiker in de huidige PowerShell-hosttoepassing in Kladblok, typt u:

notepad $PROFILE

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

notepad $PROFILE.AllUsersAllHosts

Als u de wijzigingen wilt toepassen, moet u het profielbestand opslaan en PowerShell opnieuw starten.

Een profiel kiezen

Als u meerdere hosttoepassingen gebruikt, moet u de items die u in alle hosttoepassingen gebruikt, in uw profiel $PROFILE.CurrentUserAllHosts zetten. Plaats items die specifiek zijn voor een hosttoepassing, zoals een opdracht voor het instellen van de achtergrondkleur voor een hosttoepassing, in een profiel dat specifiek is voor die hosttoepassing.

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

  • De algemene items in het profiel $PROFILE.AllUsersAllHosts opslaan
  • Store items 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 op een speciale implementatie van PowerShell-profielen.

Een profiel gebruiken

Veel van de items die u in PowerShell maakt en de meeste opdrachten die u gebruikt, zijn alleen van invloed op de huidige sessie. Wanneer u de sessie hebt beƫindigen, worden de items verwijderd.

De sessiespecifieke opdrachten en items omvatten variabelen, voorkeursvariabelen, aliassen, functies, opdrachten (met uitzondering van Set-ExecutionPolicy) 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 ze toe aan een PowerShell-profiel.

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

Een profiel starten

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

Hier vindt u enkele suggesties om aan de slag te gaan.

Opdrachten toevoegen die het eenvoudig maken om uw profiel te openen

Dit is vooral handig als u een ander profiel gebruikt dan het profiel Huidige gebruiker, Huidige host. Voeg bijvoorbeeld de volgende opdracht toe:

function Pro {notepad $PROFILE.CurrentUserAllHosts}

Een functie toevoegen die de aliassen voor elke cmdlet vermeldt

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

Uw console aanpassen

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

Een aangepaste PowerShell-prompt toevoegen

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

Zie voor meer informatie over de PowerShell-prompt about_Prompts.

De parameter NoProfile

Als u PowerShell zonder profielen wilt starten, gebruikt u de parameter NoProfile van PowerShell.exe, het programma dat PowerShell start.

Open om te beginnen een programma dat PowerShell kan starten, zoals Cmd.exe of PowerShell zelf. U kunt ook het dialoogvenster Uitvoeren in Windows.

Type:

PowerShell -NoProfile

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

PowerShell -?

Profielen en uitvoeringsbeleid

Het PowerShell-uitvoeringsbeleid bepaalt deels 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 Set-ExecutionPolicy een opdracht stelt u het uitvoeringsbeleid in en wijzigt u dit. Het is een van de paar opdrachten die van toepassing is 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 Set-ExecutionPolicy opdracht op te slaan 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 automatische $PROFILE 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 de operator dot sourcing 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