- 11/30/2017
- 7 minuten om te lezen
-
- S
- s
- x
- q
- Korte beschrijving
- Lange beschrijving
- De profielbestanden
- De variabele $PROFILE
- Hoe maakt u een profiel
- Hoe bewerkt u een profiel
- Hoe kiest u een profiel
- Hoe gebruikt u een profiel
- Hoe een profiel te starten
- Commando’s toevoegen die het openen van uw profiel vergemakkelijken
- Een functie toevoegen die de aliassen voor elk cmdlet weergeeft
- Uw console aanpassen
- Een aangepaste PowerShell-prompt toevoegen
- De NoProfile-parameter
- Bestanden en uitvoeringsbeleid
- Profielen en externe sessies
- Zie ook
Korte beschrijving
Beschrijft hoe u een PowerShell profiel kunt maken en gebruiken.
Lange beschrijving
U kunt een PowerShell-profiel maken om uw omgeving aan te passen en om 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, snap-ins, modules en PowerShelldrives toevoegen. U kunt ook andere sessie-specifieke elementen aan uw profiel toevoegen, zodat deze in elke sessie beschikbaar zijn zonder dat u ze hoeft te importeren of opnieuw hoeft 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 kunt maken en onderhouden.
Uitgelegd wordt hoe u de parameter NoProfile van de PowerShell-console (PowerShell.exe) kunt gebruiken om PowerShell zonder profielen te starten. Ook wordt uitgelegd wat het effect is van het PowerShell-uitvoeringsbeleid op profielen.
De profielbestanden
PowerShell ondersteunt verschillende profielbestanden. Ook kunnen PowerShell-hostprogramma’s hun eigen hostspecifieke profielen ondersteunen.
Zo ondersteunt de PowerShell-console bijvoorbeeld de volgende basisprofielbestanden. De profielen zijn gerangschikt in volgorde van prioriteit. Het eerste profiel heeft de hoogste prioriteit.
Description | Path |
---|---|
All Users, All Hosts | $PSHOMEProfile.ps1 |
Alle gebruikers, huidige host | $PSHOMEMicrosoft.PowerShell_profile.ps1 |
Current User, alle hosts | $Home\Documents\PowerShell\Profile.ps1 |
Huidige gebruiker, huidige host | $Home\Documents\PowerShell Microsoft.PowerShell_profile.ps1 |
De profielpaden bevatten de volgende variabelen:
- De
$PSHOME
variabele, die de installatiedirectory voorPowerShell opslaat - De
$Home
variabele, die de homedirectory van de huidige gebruiker opslaat
Andere programma’s die PowerShell hosten, kunnen bovendien hun eigen profielen ondersteunen. Visual Studio Code ondersteunt bijvoorbeeld de volgende hostspecifieke profielen.
Description | Path |
---|---|
Alle gebruikers, huidige host | $PSHOME.VSCode_profile.ps1 |
De huidige gebruiker, huidige host | $Home\Documents\PowerShell Microsoft.VSCode_profile.ps1 |
In de PowerShell Help is het profiel “CurrentUser, Current Host” het profiel dat het vaakst wordt aangeduid als “uw PowerShell-profiel”.
De variabele $PROFILE
De automatische variabele $PROFILE
slaat de paden op naar de PowerShell-profielen die beschikbaar zijn in de huidige sessie.
Om een profielpad weer te geven, toont u de waarde van de variabele $PROFILE
. U kunt de variabele $PROFILE
ook in een opdracht gebruiken om een pad weer te geven.
In de variabele $PROFILE
wordt het pad naar het profiel “Huidige gebruiker, huidige host” opgeslagen. De andere profielen worden opgeslagen in notitie-eigenschappen van de $PROFILE
-variabele.
De $PROFILE
-variabele heeft bijvoorbeeld de volgende waarden in de WindowsPowerShell-console.
Description | Name |
---|---|
Current User, Current Host | $PROFILE |
Current User, Huidige Host | $PROFILE.CurrentUserCurrentHost |
Courante Gebruiker, Alle Hosts | $PROFILE.CurrentUserAllHosts |
Alle Gebruikers, Huidige host | $PROFILE.AllUsersCurrentHost |
Alle gebruikers, alle hosts | $PROFILE.AllUsersAllHosts |
Omdat de waarden van de variabele $PROFILE
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.
Om de huidige waarden van de variabele $PROFILE
te zien, typt u:
$PROFILE | Get-Member -Type NoteProperty
U kunt de variabele $PROFILE
in veel opdrachten gebruiken. De volgende opdracht opent bijvoorbeeld het profiel “Huidige gebruiker, huidige host” in Kladblok:
notepad $PROFILE
De volgende opdracht bepaalt of een profiel “Alle gebruikers, alle hosts” is gemaakt op de lokale computer:
Test-Path -Path $PROFILE.AllUsersAllHosts
Hoe maakt u een profiel
Om een PowerShell-profiel te maken, gebruikt u de volgende opdrachtopmaak:
if (!(Test-Path -Path <profile-name>)) { New-Item -ItemType File -Path <profile-name> -Force}
Om bijvoorbeeld een profiel te 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 vermelding If
dat u een bestaand profiel overschrijft. Vervang de waarde van de plaatsaanduiding <profile-path> door het pad naar het profielbestand dat u wilt maken.
Note
Om profielen voor “Alle gebruikers” te maken in Windows Vista en latere versies van Windows, start u PowerShell met de optie Uitvoeren als beheerder.
Hoe bewerkt u een profiel
U kunt elk PowerShell-profiel openen in een teksteditor, zoals Kladblok.
Om het profiel van de huidige gebruiker in de huidige PowerShell-hosttoepassing in Kladblok te openen, typt u:
notepad $PROFILE
Om andere profielen te openen, geeft u de profielnaam op. Om bijvoorbeeld het profiel voor alle gebruikers van alle hosttoepassingen te openen, typt u:
notepad $PROFILE.AllUsersAllHosts
Om de wijzigingen toe te passen, slaat u het profielbestand op en start u PowerShell opnieuw.
Hoe kiest u een profiel
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 aanpast, volg dan deze richtlijnen:
- Bewaar de gemeenschappelijke items in het
$PROFILE.AllUsersAllHosts
profiel - Bewaar items die specifiek zijn voor een hostapplicatie in
$PROFILE.AllUsersCurrentHost
profielen die specifiek zijn voor de hostapplicatie - Bewaar items voor bepaalde gebruikers in de gebruikersspecifieke profielen
Zorg ervoor dat u de documentatie van de hostapplicatie raadpleegt voor eventuele speciale implementaties van PowerShell-profielen.
Hoe gebruikt u een profiel
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 vanSet-ExecutionPolicy) en PowerShell-modules die u aan de sessie toevoegt.
Om deze items op te slaan en ze beschikbaar te 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 hoeven maken.
Hoe een profiel te starten
Wanneer u het profielbestand opent, is het leeg. U kunt het echter vullen met variabelen, aliassen en commando’s die u vaak gebruikt.
Hier volgen een paar suggesties om u op weg te helpen.
Commando’s toevoegen die het openen van uw profiel vergemakkelijken
Dit is vooral handig als u een ander profiel gebruikt dan het profiel “Huidige gebruiker, huidige host”. Voeg bijvoorbeeld het volgende commando toe:
function Pro {notepad $PROFILE.CurrentUserAllHosts}
Een functie toevoegen die de aliassen voor elk cmdlet weergeeft
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) + "> "}
Voor meer informatie over de PowerShell-prompt, zieabout_Prompts.
De NoProfile-parameter
Om PowerShell zonder profielen te starten, gebruikt u de NoProfile-parameter vanPowerShell.exe, het programma dat PowerShell start.
Om te beginnen, opent u een programma dat PowerShell kan starten, zoals Cmd.exe ofPowerShell 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 -?
Bestanden en uitvoeringsbeleid
Het uitvoeringsbeleid van PowerShell bepaalt voor een deel of u scripts kunt uitvoeren en configuratiebestanden kunt laden, waaronder de profielen. Het uitvoeringsbeleid Beperkt is de standaardinstelling. Hiermee wordt voorkomen 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.
Een opdracht Set-ExecutionPolicy
stelt uw uitvoeringsbeleid in en wijzigt dit. Dit is een van de weinige opdrachten die in alle PowerShell-sessies van toepassing is, omdat de waarde in het register wordt opgeslagen. U hoeft het niet in te stellen wanneer u de console opent, en u hoeft een Set-ExecutionPolicy
-commando niet in uw profiel op te slaan.
Profielen en externe sessies
PowerShell-profielen worden niet automatisch uitgevoerd in externe sessies, dus de commando’s die de profielen toevoegen, zijn niet aanwezig in de externe sessie. Bovendien wordt de automatische variabele $PROFILE
niet ingevuld in sessies op afstand.
Om een profiel in een sessie uit te voeren, gebruikt u het commando Invoke-Commandcmdlet.
Het volgende commando voert bijvoorbeeld het profiel “Current user, Current Host” uit vanaf de lokale computer in de sessie in $s
.
Invoke-Command -Session $s -FilePath $PROFILE
Het volgende commando voert het profiel “Current user, Current Host” uit vanaf de externe computer in de sessie in $s
. Omdat de variabele $PROFILE
niet is ingevuld, gebruikt het commando het expliciete pad naar het profiel. We gebruiken de dotsourcing operator zodat het profiel wordt uitgevoerd in het huidige bereik op de remote computer en niet in zijn eigen bereik.
Invoke-Command -Session $s -ScriptBlock { . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Na het uitvoeren van dit commando, zijn de commando’s die het profiel toevoegt aan de sessie beschikbaar in $s
.
Zie ook
over_Automatic_Variables
over_Functions
over_Prompts
over_Execution_Policies
over_Signing
over_Remote
over_Scopes
Set-ExecutionPolicy