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 een 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 aan uw profiel toevoegen, zodat ze in elke sessie beschikbaar zijn zonder dat u ze hoeft te importeren of opnieuw te 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.
Hierin wordt uitgelegd hoe u de parameter NoProfile van de PowerShell-console (PowerShell.exe) gebruikt om PowerShell zonder profielen te starten. En hierin wordt het effect van het PowerShell-uitvoeringsbeleid op profielen uitgelegd.
De profielbestanden
PowerShell ondersteunt verschillende profielbestanden. PowerShell-hostprogramma's kunnen ook 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 ]Documents\PowerShell\Profile.ps1 Linux - ~/.config/powershell/profile.ps1 macOS - ~/.config/powershell/profile.ps1 |
Huidige gebruiker, Huidige host | Windows - $Home\[Mijn ]Documents\PowerShell\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, waarmee de installatiemap voor PowerShell wordt opgeslagen - De
$Home
variabele, waarin de basismap van de huidige gebruiker wordt opgeslagen
Daarnaast kunnen andere programma's die PowerShell hosten hun eigen profielen ondersteunen. Visual Studio Code ondersteunt bijvoorbeeld de volgende hostspecifieke profielen.
Description | Pad |
---|---|
Alle gebruikers, Huidige host | $PSHOME\Microsoft.VSCode_profile.ps1 |
Huidige gebruiker, Huidige host | $Home\[Mijn ]Documenten\PowerShell\ 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. We raden u niet aan de map Documenten om te leiden naar een netwerkshare of deze op te slaan in OneDrive. Het omleiden van de map kan ertoe leiden dat uw profielscripts mislukken en 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 $PROFILE
variabele weer. U kunt ook de $PROFILE
variabele in een opdracht gebruiken om een pad aan te geven.
Met $PROFILE
de variabele wordt het pad naar het profiel 'Huidige gebruiker, huidige host' opgeslagen. De andere profielen worden opgeslagen in 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 weergeeft in elke PowerShell-hosttoepassing die u gebruikt.
Als u de huidige waarden van de $PROFILE
variabele wilt zien, typt u:
$PROFILE | Get-Member -Type NoteProperty
U kunt de $PROFILE
variabele in veel opdrachten gebruiken. Met de volgende opdracht opent u bijvoorbeeld het profiel 'Huidige gebruiker, huidige host' in Kladblok:
notepad $PROFILE
Met de volgende opdracht wordt bepaald of een profiel 'Alle gebruikers, alle hosts' is gemaakt op de lokale computer:
Test-Path -Path $PROFILE.AllUsersAllHosts
Een profiel maken
Als u een PowerShell-profiel wilt maken, gebruikt u de volgende opdrachtindeling:
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 met de If
instructie dat u een bestaand profiel overschrijft. Vervang de waarde van de <tijdelijke aanduiding profielpad> 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 het profiel van de huidige gebruiker wilt openen 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 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 gebruikt in uw $PROFILE.CurrentUserAllHosts
profiel. 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 aan het aanpassen is, volgt u deze richtlijnen:
- De algemene items opslaan in het
$PROFILE.AllUsersAllHosts
profiel - Items opslaan die specifiek zijn voor een hosttoepassing in
$PROFILE.AllUsersCurrentHost
profielen die specifiek zijn voor de hosttoepassing - Items voor bepaalde gebruikers opslaan in de gebruikersspecifieke profielen
Raadpleeg de documentatie van de hosttoepassing voor speciale implementaties van PowerShell-profielen.
Een profiel gebruiken
Veel van de items die u in PowerShell maakt 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 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 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.
Opdrachten toevoegen waarmee u uw profiel eenvoudig kunt 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 waarmee de 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 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 about_Prompts voor meer informatie over de PowerShell-prompt.
De NoProfile-parameter
Als u PowerShell zonder profielen wilt starten, gebruikt u de parameter NoProfile van PowerShell.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:
PowerShell -NoProfile
Voor een volledige lijst van de parameters van PowerShell.exe typt u:
PowerShell -?
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. Het is een van de weinige 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 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
.