about_Session_Configuration_Files

Korte beschrijving

Beschrijft sessieconfiguratiebestanden, die worden gebruikt in een sessieconfiguratie (ook wel een 'eindpunt' genoemd) om de omgeving te definiëren van sessies die gebruikmaken van de sessieconfiguratie.

Lange beschrijving

Deze informatie is alleen van toepassing op PowerShell die wordt uitgevoerd in Windows.

Een 'sessieconfiguratiebestand' is een tekstbestand met de extensie .pssc-bestandsnaam die een hash-tabel met sessieconfiguratie-eigenschappen en -waarden bevat. U kunt een sessieconfiguratiebestand gebruiken om de eigenschappen van een sessieconfiguratie in te stellen. Hiermee definieert u de omgeving van PowerShell-sessies die gebruikmaken van die sessieconfiguratie.

Met sessieconfiguratiebestanden kunt u eenvoudig aangepaste sessieconfiguraties maken zonder complexe C#-assembly's of scripts te gebruiken.

Een 'sessieconfiguratie' of 'eindpunt' is een verzameling lokale computerinstellingen waarmee wordt bepaald welke gebruikers sessies op de computer kunnen maken; welke opdrachten gebruikers in deze sessies kunnen uitvoeren; en of de sessie moet worden uitgevoerd als een bevoegd virtueel account. Zie about_Session_Configurations (Engelstalig) voor meer informatie over sessieconfiguraties.

Sessieconfiguraties zijn geïntroduceerd in Windows PowerShell 2.0 en sessieconfiguratiebestanden zijn geïntroduceerd in Windows PowerShell 3.0. U moet Windows PowerShell 3.0 gebruiken om een sessieconfiguratiebestand op te nemen in een sessieconfiguratie. Gebruikers van Windows PowerShell 2.0 (en hoger) worden echter beïnvloed door de instellingen in de sessieconfiguratie.

Aangepaste sessies maken

U kunt veel functies van een PowerShell-sessie aanpassen door sessie-eigenschappen op te geven in een sessieconfiguratie. U kunt een sessie aanpassen door een C#-programma te schrijven dat een aangepaste runspace definieert, of u kunt een sessieconfiguratiebestand gebruiken om de eigenschappen te definiëren van sessies die zijn gemaakt met behulp van de sessieconfiguratie. Over het algemeen is het eenvoudiger om het sessieconfiguratiebestand te gebruiken dan om een C#-programma te schrijven.

U kunt een sessieconfiguratiebestand gebruiken om items te maken, zoals volledig functionerende sessies voor zeer vertrouwde gebruikers; vergrendelde sessies die minimale toegang toestaan; sessies die speciaal zijn ontworpen en die alleen de modules bevatten die nodig zijn voor deze taken; en sessies waarbij onbevoegde gebruikers alleen specifieke opdrachten kunnen uitvoeren als een bevoegd account.

Daarnaast kunt u beheren of gebruikers van de sessie PowerShell-taalelementen, zoals scriptblokken, kunnen gebruiken of dat ze alleen opdrachten kunnen uitvoeren. U kunt de versie van PowerShell-gebruikers beheren die in de sessie kunnen worden uitgevoerd; beheren welke modules in de sessie worden geïmporteerd; en beheer welke cmdlets, functies en aliassen sessiegebruikers kunnen uitvoeren. Wanneer u het veld RoleDefinitions gebruikt, kunt u gebruikers verschillende mogelijkheden in de sessie geven op basis van groepslidmaatschap.

Zie het Help-onderwerp voor de cmdlet New-PSRoleCapabilityFile voor meer informatie over RoleDefinitions en het definiëren van deze waarde.

Een sessieconfiguratiebestand maken

De eenvoudigste manier om een sessieconfiguratiebestand te maken, is met behulp van de cmdlet New-PSSessionConfigurationFile. Met deze cmdlet wordt een bestand gegenereerd dat gebruikmaakt van de juiste syntaxis en indeling en waarmee automatisch veel van de eigenschapswaarden van het configuratiebestand worden geverifieerd.

Zie het Help-onderwerp voor de cmdlet New-PSSessionConfigurationFile voor gedetailleerde beschrijvingen van de eigenschappen die u kunt instellen in een sessieconfiguratiebestand.

Met de volgende opdracht maakt u een sessieconfiguratiebestand dat gebruikmaakt van de standaardwaarden. Het resulterende configuratiebestand gebruikt alleen de standaardwaarden omdat er geen andere parameters zijn dan de padparameter (die het bestandspad opgeeft) zijn opgenomen:

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Gebruik de volgende opdracht om het nieuwe configuratiebestand weer te geven in uw standaardteksteditor:

Invoke-Item -Path .\Defaults.pssc

Als u een sessieconfiguratie wilt maken voor sessies waarin de gebruiker opdrachten kan uitvoeren, maar geen andere elementen van de PowerShell-taal gebruikt, typt u:

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

Met de voorgaande opdracht voorkomt u dat gebruikers de parameter LanguageMode instellen op NoLanguage, zoals het schrijven of uitvoeren van scripts, of het gebruik van variabelen.

Als u een sessieconfiguratie wilt maken voor sessies waarin gebruikers alleen Get-cmdlets kunnen gebruiken, typt u:

New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc

In het vorige voorbeeld wordt de parameter VisibleCmdlets ingesteld op Get-* om gebruikers te beperken tot cmdlets met namen die beginnen met de tekenreekswaarde 'Get-'.

Als u een sessieconfiguratie wilt maken voor sessies die worden uitgevoerd onder een bevoegd virtueel account in plaats van de referenties van de gebruiker, typt u:

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

Als u een sessieconfiguratie wilt maken voor sessies waarin de opdrachten die zichtbaar zijn voor de gebruiker, worden opgegeven in een bestand met functiemogelijkheden, typt u:

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

Een sessieconfiguratiebestand gebruiken

U kunt een sessieconfiguratiebestand opnemen wanneer u een sessieconfiguratie maakt of u kunt een bestand toevoegen aan de sessieconfiguratie op een later tijdstip.

Als u een sessieconfiguratiebestand wilt opnemen bij het maken van een sessieconfiguratie, gebruikt u de padparameter van de cmdlet Register-PSSessionConfiguration.

De volgende opdracht maakt bijvoorbeeld gebruik van het bestand NoLanguage.pssc wanneer er een NoLanguage-sessieconfiguratie wordt gemaakt.

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

Wanneer een nieuwe NoLanguage-sessie wordt gestart, hebben gebruikers alleen toegang tot PowerShell-opdrachten.

Als u een sessieconfiguratiebestand wilt toevoegen aan een bestaande sessieconfiguratie, gebruikt u de cmdlet Set-PSSessionConfiguration en de parameter Path. Dit is van invloed op nieuwe sessies die zijn gemaakt met de opgegeven sessieconfiguratie. Houd er rekening mee dat de cmdlet Set-PSSessionConfiguration de sessie zelf wijzigt en het sessieconfiguratiebestand niet wijzigt.

Met de volgende opdracht wordt bijvoorbeeld het bestand NoLanguage.pssc toegevoegd aan de configuratie van de LockedDown-sessie.

Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc

Wanneer gebruikers de lockeddown-sessieconfiguratie gebruiken om een sessie te maken, kunnen ze cmdlets uitvoeren, maar kunnen ze geen variabelen maken of gebruiken, waarden toewijzen of andere PowerShell-taalelementen gebruiken.

De volgende opdracht maakt gebruik van de cmdlet New-PSSession om een sessie te maken op de computer Srv01 die gebruikmaakt van de configuratie van de LockedDown-sessie, waarbij een objectverwijzing naar de sessie in de $s variabele wordt opgeslagen. De ACL (toegangsbeheerlijst) van de sessieconfiguratie bepaalt wie deze kan gebruiken om een sessie te maken.

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

Omdat de noLanguage-beperkingen zijn toegevoegd aan de configuratie van de LockedDown-sessie, kunnen gebruikers in LockedDown-sessies alleen PowerShell-opdrachten en -cmdlets uitvoeren. De volgende twee opdrachten gebruiken bijvoorbeeld de cmdlet Invoke-Command om opdrachten uit te voeren in de sessie waarnaar wordt verwezen in de variabele $s. De eerste opdracht, die de Get-UICulture-cmdlet uitvoert en geen variabelen gebruikt, slaagt. De tweede opdracht, waarmee de waarde van de $PSUICulture variabele wordt opgehaald, mislukt.

Invoke-Command -Session $s {Get-UICulture}
en-US

Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo          : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed

Een sessieconfiguratiebestand bewerken

Alle instellingen in een sessieconfiguratie, met uitzondering van RunAsVirtualAccount en RunAsVirtualAccountGroups, kunnen worden gewijzigd door het sessieconfiguratiebestand te bewerken dat wordt gebruikt door de sessieconfiguratie. U doet dit door eerst de actieve kopie van het sessieconfiguratiebestand te zoeken.

Wanneer u een sessieconfiguratiebestand in een sessieconfiguratie gebruikt, maakt PowerShell een actieve kopie van het sessieconfiguratiebestand en slaat het op in de map $pshome\SessionConfig op de lokale computer.

De locatie van de actieve kopie van een sessieconfiguratiebestand wordt opgeslagen in de eigenschap ConfigFilePath van het sessieconfiguratieobject.

Met de volgende opdracht wordt de locatie van het sessieconfiguratiebestand voor de NoLanguage-sessieconfiguratie opgeslagen.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

Met deze opdracht wordt een bestandspad geretourneerd dat vergelijkbaar is met de volgende:

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

U kunt het PSSC-bestand bewerken in elke teksteditor. Nadat het bestand is opgeslagen, wordt het gebruikt door nieuwe sessies die gebruikmaken van de sessieconfiguratie.

Als u runAsVirtualAccount of de instellingen van RunAsVirtualAccountGroups wilt wijzigen, moet u de sessieconfiguratie ongedaan maken en een sessieconfiguratiebestand met de bewerkte waarden opnieuw registreren.

Een sessieconfiguratiebestand testen

Gebruik de cmdlet Test-PSSessionConfigurationFile om handmatig bewerkte sessieconfiguratiebestanden te testen. Dat is belangrijk: als de bestandssyntaxis en -waarden ongeldige gebruikers niet in staat zijn om de sessieconfiguratie te gebruiken om een sessie te maken.

Met de volgende opdracht wordt bijvoorbeeld het actieve sessieconfiguratiebestand van de NoLanguage-sessieconfiguratie getest.

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

Als de syntaxis en waarden in het configuratiebestand geldige Test-PSSessionConfigurationFile zijn, retourneert True. Als de syntaxis en waarden ongeldig zijn, retourneert de cmdlet False.

U kunt Test-PSSessionConfigurationFile gebruiken om elk sessieconfiguratiebestand te testen, inclusief bestanden die door de cmdlet New-PSSessionConfiguration worden gemaakt. Zie het Help-onderwerp voor de cmdlet Test-PSSessionConfigurationFile voor meer informatie.

Een sessieconfiguratiebestand verwijderen

U kunt een sessieconfiguratiebestand niet verwijderen uit een sessieconfiguratie. U kunt het bestand echter vervangen door een nieuw bestand dat gebruikmaakt van de standaardinstellingen. Hierdoor worden de instellingen die door het oorspronkelijke configuratiebestand worden gebruikt, geannuleerd.

Als u een sessieconfiguratiebestand wilt vervangen, maakt u een nieuw sessieconfiguratiebestand dat gebruikmaakt van de standaardinstellingen en gebruikt u vervolgens de cmdlet Set-PSSessionConfiguration om het aangepaste sessieconfiguratiebestand te vervangen door het nieuwe bestand.

Met de volgende opdrachten maakt u bijvoorbeeld een standaardsessieconfiguratiebestand en vervangt u vervolgens het actieve sessieconfiguratiebestand in de configuratie van de NoLanguage-sessie.

New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc

Wanneer deze opdrachten zijn voltooid, biedt de configuratie van de NoLanguage-sessie in feite volledige taalondersteuning (de standaardinstelling) voor alle sessies die zijn gemaakt met die sessieconfiguratie.

Het weergeven van de eigenschappen van een sessieconfiguratie De sessieconfiguratieobjecten die sessieconfiguraties vertegenwoordigen met behulp van sessieconfiguratiebestanden hebben aanvullende eigenschappen waarmee u de sessieconfiguratie eenvoudig kunt detecteren en analyseren. (Houd er rekening mee dat de hieronder weergegeven typenaam een indelingsdefinitie bevat.) U kunt de eigenschappen bekijken door de Get-PSSessionConfiguration-cmdlet uit te voeren en de geretourneerde gegevens door te leiden naar de Get-Member-cmdlet:

Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration

Name                          MemberType     Definition
----                          ----------     ----------
Equals                        Method         bool Equals(System.O...
GetHashCode                   Method         int GetHashCode()
GetType                       Method         type GetType()
ToString                      Method         string ToString()
Architecture                  NoteProperty   System.String Archit...
Author                        NoteProperty   System.String Author...
AutoRestart                   NoteProperty   System.String AutoRe...
Capability                    NoteProperty   System.Object[] Capa...
CompanyName                   NoteProperty   System.String Compan...
configfilepath                NoteProperty   System.String config...
Copyright                     NoteProperty   System.String Copyri...
Enabled                       NoteProperty   System.String Enable...
ExactMatch                    NoteProperty   System.String ExactM...
ExecutionPolicy               NoteProperty   System.String Execut...
Filename                      NoteProperty   System.String Filena...
GUID                          NoteProperty   System.String GUID=0...
ProcessIdleTimeoutSec         NoteProperty   System.String Proces...
IdleTimeoutms                 NoteProperty   System.String IdleTi...
lang                          NoteProperty   System.String lang=e...
LanguageMode                  NoteProperty   System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty   System.String MaxCon...
MaxConcurrentUsers            NoteProperty   System.String MaxCon...
MaxIdleTimeoutms              NoteProperty   System.String MaxIdl...
MaxMemoryPerShellMB           NoteProperty   System.String MaxMem...
MaxProcessesPerShell          NoteProperty   System.String MaxPro...
MaxShells                     NoteProperty   System.String MaxShells
MaxShellsPerUser              NoteProperty   System.String MaxShe...
Name                          NoteProperty   System.String Name=N...
PSVersion                     NoteProperty   System.String PSVersion
ResourceUri                   NoteProperty   System.String Resour...
RunAsPassword                 NoteProperty   System.String RunAsP...
RunAsUser                     NoteProperty   System.String RunAsUser
SchemaVersion                 NoteProperty   System.String Schema...
SDKVersion                    NoteProperty   System.String SDKVer...
OutputBufferingMode           NoteProperty   System.String Output...
SessionType                   NoteProperty   System.String Sessio...
UseSharedProcess              NoteProperty   System.String UseSha...
SupportsOptions               NoteProperty   System.String Suppor...
xmlns                         NoteProperty   System.String xmlns=...
XmlRenderingType              NoteProperty   System.String XmlRen...
Permission                    ScriptProperty System.Object Permis...

Met deze eigenschappen kunt u eenvoudig zoeken naar specifieke sessieconfiguraties. U kunt bijvoorbeeld de eigenschap ExecutionPolicy gebruiken om een sessieconfiguratie te vinden die sessies ondersteunt met het RemoteSigned-uitvoeringsbeleid. Houd er rekening mee dat, omdat de eigenschap ExecutionPolicy alleen bestaat voor sessies die sessieconfiguratiebestanden gebruiken, de opdracht mogelijk niet alle in aanmerking komende sessieconfiguraties retourneert.

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

Met de volgende opdracht worden sessieconfiguraties opgeslagen waarin RunAsUser de Exchange-beheerder is.

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

Als u informatie wilt weergeven over de roldefinities die zijn gekoppeld aan een configuratie, gebruikt u de cmdlet Get-PSSessionCapability. Met deze cmdlet kunt u de opdrachten en omgevingen bepalen die beschikbaar zijn voor specifieke gebruikers in specifieke eindpunten.

Opmerkingen

Sessieconfiguraties ondersteunen ook een type sessie dat een 'lege' sessie wordt genoemd. Met een leeg sessietype kunt u aangepaste sessies maken met geselecteerde opdrachten. Als u geen modules, functies of scripts toevoegt aan een lege sessie, is de sessie beperkt tot expressies en is deze mogelijk niet praktisch. De eigenschap SessionType geeft aan of u met een lege sessie werkt.

Zie ook