about_Session_Configuration_Files
Korte beschrijving
Hierin worden sessieconfiguratiebestanden beschreven, 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
Een 'sessieconfiguratiebestand' is een tekstbestand met de bestandsnaamextensie .pssc dat 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 die bepalen 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 zijn ontworpen voor specifieke en die alleen de modules bevatten die voor deze taken vereist zijn; en sessies waarin 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 beheren die gebruikers in de sessie kunnen uitvoeren; beheren welke modules in de sessie worden geïmporteerd; en beheren 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 de juiste syntaxis en indeling gebruikt 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 dan de path-parameter (waarmee het bestandspad wordt opgegeven) zijn opgenomen:
New-PSSessionConfigurationFile -Path .\Defaults.pssc
Als u het nieuwe configuratiebestand wilt weergeven in de standaardteksteditor, gebruikt u de volgende opdracht:
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 kan gebruiken, typt u:
New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc
Als u in de voorgaande opdracht de parameter LanguageMode instelt op NoLanguage, voorkomt u dat gebruikers bijvoorbeeld scripts schrijven, uitvoeren of variabelen gebruiken.
Als u een sessieconfiguratie wilt maken voor sessies waarin gebruikers alleen Get-cmdlets kunnen gebruiken, typt u:
New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc
Als u in het voorgaande voorbeeld de parameter VisibleCmdlets instelt op Get-*, worden gebruikers beperkt 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 zijn 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 parameter Pad van de cmdlet Register-PSSessionConfiguration.
De volgende opdracht gebruikt bijvoorbeeld het bestand NoLanguage.pssc wanneer er een Configuratie van een NoLanguage-sessie 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 vergrendelde sessieconfiguratie.
Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc
Wanneer gebruikers de vergrendelde 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.
Met de volgende opdracht wordt de cmdlet New-PSSession gebruikt om een sessie te maken op de computer Srv01 die gebruikmaakt van de vergrendelde sessieconfiguratie, waarbij een objectverwijzing naar de sessie wordt opgeslagen in de variabele $s. 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 vergrendelde sessieconfiguratie, 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, waarmee de cmdlet Get-UICulture wordt uitgevoerd en geen variabelen gebruikt, slaagt. De tweede opdracht, waarmee de waarde van de variabele $PSUICulture 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 door de sessieconfiguratie wordt gebruikt. Om dit te doen, begint u met het zoeken naar de actieve kopie van het sessieconfiguratiebestand.
Wanneer u een sessieconfiguratiebestand in een sessieconfiguratie gebruikt, maakt PowerShell een actieve kopie van het sessieconfiguratiebestand en slaat dit 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 configuratie van de NoLanguage-sessie opgeslagen.
(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath
Deze opdracht retourneert een bestandspad dat vergelijkbaar is met het 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 de instellingen RunAsVirtualAccount of RunAsVirtualAccountGroups wilt wijzigen, moet u de registratie van 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 ongeldig zijn, kunnen gebruikers de sessieconfiguratie niet gebruiken om een sessie te maken.
Met de volgende opdracht wordt bijvoorbeeld het configuratiebestand van de actieve sessie van de sessieconfiguratie NoLanguage 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 geldig zijn, retourneert Test-PSSessionConfigurationFile True. Als de syntaxis en waarden niet geldig zijn, retourneert de cmdlet False.
U kunt Test-PSSessionConfigurationFile gebruiken om een 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 zijn gebruikt, geannuleerd.
Als u een sessieconfiguratiebestand wilt vervangen, maakt u een nieuw sessieconfiguratiebestand dat gebruikmaakt van de standaardinstellingen. Gebruik vervolgens de cmdlet Set-PSSessionConfiguration om het aangepaste sessieconfiguratiebestand te vervangen door het nieuwe bestand.
De volgende opdrachten maken bijvoorbeeld een standaardsessieconfiguratiebestand en vervangen vervolgens het actieve sessieconfiguratiebestand in de sessieconfiguratie NoLanguage.
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 met die sessieconfiguratie zijn gemaakt.
De eigenschappen van een sessieconfiguratie weergeven 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 opgemaakte weergavedefinitie bevat.) U kunt de eigenschappen weergeven door de cmdlet Get-PSSessionConfiguration uit te voeren en de geretourneerde gegevens door te geven aan de cmdlet Get-Member:
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 ondersteuning biedt voor sessies met het remotesigned-uitvoeringsbeleid. Omdat de eigenschap ExecutionPolicy alleen bestaat voor sessies die sessieconfiguratiebestanden gebruiken, retourneert de opdracht mogelijk niet alle in aanmerking komende sessieconfiguraties.
Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}
Met de volgende opdracht worden sessieconfiguraties opgeslagen waarin de 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 omgeving bepalen die beschikbaar zijn voor specifieke gebruikers in specifieke eindpunten.
Notities
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 van praktisch nut. De eigenschap SessionType geeft aan of u met een lege sessie werkt.
Zie ook
- about_Session_Configurations
- New-PSRoleCapabilityFile
- New-PSSession
- Get-PSSessionCapability
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile