• 11/30/2017
  • 7 minuten om te lezen
    • S
    • s
    • x
    • q

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.