about_Session_Configuration_Files

Kurze Beschreibung

Beschreibt Sitzungskonfigurationsdateien, die in einer Sitzungskonfiguration (auch als "Endpunkt" bezeichnet) verwendet werden, um die Umgebung von Sitzungen zu definieren, die die Sitzungskonfiguration verwenden.

Lange Beschreibung

Diese Informationen gelten nur für PowerShell, die unter Windows ausgeführt wird.

Eine "Sitzungskonfigurationsdatei" ist eine Textdatei mit der Dateinamenerweiterung PSSC, die eine Hashtabelle mit Sitzungskonfigurationseigenschaften und -werten enthält. Sie können eine Sitzungskonfigurationsdatei verwenden, um die Eigenschaften einer Sitzungskonfiguration festzulegen. Dadurch wird die Umgebung aller PowerShell-Sitzungen definiert, die diese Sitzungskonfiguration verwenden.

Sitzungskonfigurationsdateien vereinfachen das Erstellen von benutzerdefinierten Sitzungskonfigurationen, ohne komplexe C#-Assemblys oder Skripts zu verwenden.

Eine "Sitzungskonfiguration" oder "Endpunkt" ist eine Sammlung lokaler Computereinstellungen, die bestimmen, z. B. welche Benutzer Sitzungen auf dem Computer erstellen können; welche Befehle Benutzer in diesen Sitzungen ausführen können; und ob die Sitzung als privilegiertes virtuelles Konto ausgeführt werden soll. Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

Sitzungskonfigurationen wurden in Windows PowerShell 2.0 eingeführt, und Sitzungskonfigurationsdateien wurden in Windows PowerShell 3.0 eingeführt. Sie müssen Windows PowerShell 3.0 verwenden, um eine Sitzungskonfigurationsdatei in eine Sitzungskonfiguration einzuschließen. Benutzer von Windows PowerShell 2.0 (und höher) sind jedoch von den Einstellungen in der Sitzungskonfiguration betroffen.

Erstellen benutzerdefinierter Sitzungen

Sie können viele Features einer PowerShell-Sitzung anpassen, indem Sie Sitzungseigenschaften in einer Sitzungskonfiguration angeben. Sie können eine Sitzung anpassen, indem Sie ein C#-Programm schreiben, das einen benutzerdefinierten Runspace definiert, oder Sie können eine Sitzungskonfigurationsdatei verwenden, um die Eigenschaften von Sitzungen zu definieren, die mithilfe der Sitzungskonfiguration erstellt wurden. Im Allgemeinen ist es einfacher, die Sitzungskonfigurationsdatei zu verwenden, als ein C#-Programm zu schreiben.

Sie können eine Sitzungskonfigurationsdatei verwenden, um Elemente wie voll funktionsfähige Sitzungen für besonders vertrauenswürdige Benutzer zu erstellen. gesperrte Sitzungen, die minimalen Zugriff ermöglichen; Sitzungen, die speziell konzipiert sind und nur die module enthalten, die für diese Aufgaben erforderlich sind; und Sitzungen, in denen nicht privilegierte Benutzer nur bestimmte Befehle als privilegiertes Konto ausführen können.

Darüber hinaus können Sie verwalten, ob Benutzer der Sitzung PowerShell-Sprachelemente wie Skriptblöcke verwenden können oder ob sie nur Befehle ausführen können. Sie können die Version von PowerShell-Benutzern verwalten, die in der Sitzung ausgeführt werden können. verwalten, welche Module in die Sitzung importiert werden; und verwalten, welche Cmdlets, Funktionen und Aliase Sitzungsbenutzer ausführen können. Wenn Sie das Feld "RoleDefinitions" verwenden, können Sie Benutzern je nach Gruppenmitgliedschaft unterschiedliche Funktionen in der Sitzung zuweisen.

Weitere Informationen zu RoleDefinitions und zum Definieren dieses Werts finden Sie im Hilfethema zum Cmdlet New-PSRoleCapabilityFile.

Erstellen einer Sitzungskonfigurationsdatei

Die einfachste Möglichkeit zum Erstellen einer Sitzungskonfigurationsdatei ist die Verwendung des Cmdlets New-PSSessionConfigurationFile. Dieses Cmdlet generiert eine Datei, die die richtige Syntax und das richtige Format verwendet, und die viele der Konfigurationsdateieigenschaftswerte automatisch überprüft.

Ausführliche Beschreibungen der Eigenschaften, die Sie in einer Sitzungskonfigurationsdatei festlegen können, finden Sie im Hilfethema zum Cmdlet New-PSSessionConfigurationFile.

Der folgende Befehl erstellt eine Sitzungskonfigurationsdatei, die die Standardwerte verwendet. Die resultierende Konfigurationsdatei verwendet nur die Standardwerte, da keine parameter außer dem Path-Parameter (der den Dateipfad angibt) enthalten sind:

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Verwenden Sie den folgenden Befehl, um die neue Konfigurationsdatei im Standardtext-Editor anzuzeigen:

Invoke-Item -Path .\Defaults.pssc

Um eine Sitzungskonfiguration für Sitzungen zu erstellen, in denen Der Benutzer Befehle ausführen kann, aber keine anderen Elemente der PowerShell-Sprache verwenden kann, geben Sie Folgendes ein:

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

Durch Festlegen des LanguageMode-Parameters auf "NoLanguage" wird im vorherigen Befehl verhindert, dass Benutzer z. B. Skripts schreiben oder ausführen oder Variablen verwenden.

Um eine Sitzungskonfiguration für Sitzungen zu erstellen, in denen Benutzer nur Cmdlets abrufen können, geben Sie Folgendes ein:

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

Im vorherigen Beispiel schränkt das Festlegen des VisibleCmdlets-Parameters auf "Get-*" Benutzer auf Cmdlets ein, die mit dem Zeichenfolgenwert "Get-" beginnen.

Geben Sie Folgendes ein, um eine Sitzungskonfiguration für Sitzungen zu erstellen, die unter einem privilegierten virtuellen Konto anstelle der Anmeldeinformationen des Benutzers ausgeführt werden:

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

Um eine Sitzungskonfiguration für Sitzungen zu erstellen, in denen die für den Benutzer sichtbaren Befehle in einer Rollenfunktionendatei angegeben werden, geben Sie Folgendes ein:

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

Verwenden einer Sitzungskonfigurationsdatei

Sie können eine Sitzungskonfigurationsdatei einschließen, wenn Sie eine Sitzungskonfiguration erstellen oder eine Datei zur Sitzungskonfiguration zu einem späteren Zeitpunkt hinzufügen können.

Um eine Sitzungskonfigurationsdatei beim Erstellen einer Sitzungskonfiguration einzuschließen, verwenden Sie den Path-Parameter des Cmdlets Register-PSSessionConfiguration.

Der folgende Befehl verwendet beispielsweise die Datei "NoLanguage.pssc", wenn eine NoLanguage-Sitzungskonfiguration erstellt wird.

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

Wenn eine neue NoLanguage-Sitzung gestartet wird, haben Benutzer nur Zugriff auf PowerShell-Befehle.

Verwenden Sie das Cmdlet Set-PSSessionConfiguration und den Path-Parameter, um einer vorhandenen Sitzungskonfiguration eine Sitzungskonfigurationsdatei hinzuzufügen. Dies wirkt sich auf alle neuen Sitzungen aus, die mit der angegebenen Sitzungskonfiguration erstellt wurden. Beachten Sie, dass das Cmdlet Set-PSSessionConfiguration die Sitzung selbst ändert und die Sitzungskonfigurationsdatei nicht ändert.

Mit dem folgenden Befehl wird beispielsweise die Datei "NoLanguage.pssc" zur LockedDown-Sitzungskonfiguration hinzugefügt.

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

Wenn Benutzer die LockedDown-Sitzungskonfiguration zum Erstellen einer Sitzung verwenden, können sie Cmdlets ausführen, aber sie können keine Variablen erstellen oder verwenden, Werte zuweisen oder andere PowerShell-Sprachelemente verwenden.

Der folgende Befehl verwendet das Cmdlet New-PSSession, um eine Sitzung auf dem Computer Srv01 zu erstellen, die die LockedDown-Sitzungskonfiguration verwendet und einen Objektverweis auf die Sitzung in der $s Variablen speichert. Die ACL (Zugriffssteuerungsliste) der Sitzungskonfiguration bestimmt, wer sie zum Erstellen einer Sitzung verwenden kann.

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

Da die NoLanguage-Einschränkungen zur LockedDown-Sitzungskonfiguration hinzugefügt wurden, können Benutzer in LockedDown-Sitzungen nur PowerShell-Befehle und -Cmdlets ausführen. Die folgenden beiden Befehle verwenden beispielsweise das Cmdlet Invoke-Command, um Befehle in der Sitzung auszuführen, auf die in der variablen $s verwiesen wird. Der erste Befehl, der das Cmdlet Get-UICulture ausführt und keine Variablen verwendet, ist erfolgreich. Der zweite Befehl, der den Wert der $PSUICulture Variablen abruft, schlägt fehl.

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

Bearbeiten einer Sitzungskonfigurationsdatei

Alle Einstellungen in einer Sitzungskonfiguration mit Ausnahme von RunAsVirtualAccount und RunAsVirtualAccountGroups können geändert werden, indem die sitzungskonfigurationsdatei bearbeitet wird, die von der Sitzungskonfiguration verwendet wird. Beginnen Sie dazu mit der Suche nach der aktiven Kopie der Sitzungskonfigurationsdatei.

Wenn Sie eine Sitzungskonfigurationsdatei in einer Sitzungskonfiguration verwenden, erstellt PowerShell eine aktive Kopie der Sitzungskonfigurationsdatei und speichert sie im Verzeichnis $pshome\SessionConfig auf dem lokalen Computer.

Der Speicherort der aktiven Kopie einer Sitzungskonfigurationsdatei wird in der ConfigFilePath-Eigenschaft des Sitzungskonfigurationsobjekts gespeichert.

Der folgende Befehl ruft den Speicherort der Sitzungskonfigurationsdatei für die NoLanguage-Sitzungskonfiguration ab.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

Dieser Befehl gibt einen Dateipfad wie folgt zurück:

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

Sie können die PSSC-Datei in einem beliebigen Text-Editor bearbeiten. Nachdem die Datei gespeichert wurde, wird sie von allen neuen Sitzungen verwendet, die die Sitzungskonfiguration verwenden.

Wenn Sie die Einstellungen "RunAsVirtualAccount" oder "RunAsVirtualAccountGroups" ändern müssen, müssen Sie die Sitzungskonfiguration aufheben und eine Sitzungskonfigurationsdatei erneut registrieren, die die bearbeiteten Werte enthält.

Testen einer Sitzungskonfigurationsdatei

Verwenden Sie das Cmdlet Test-PSSessionConfigurationFile, um manuell bearbeitete Sitzungskonfigurationsdateien zu testen. Das ist wichtig: Wenn die Dateisyntax und die Werte ungültig sind, können Benutzer die Sitzungskonfiguration nicht verwenden, um eine Sitzung zu erstellen.

Der folgende Befehl testet beispielsweise die aktive Sitzungskonfigurationsdatei der NoLanguage-Sitzungskonfiguration.

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

Wenn die Syntax und werte in der Konfigurationsdatei gültige Test-PSSessionConfigurationFile sind, wird True zurückgegeben. Wenn die Syntax und die Werte ungültig sind, gibt das Cmdlet "False" zurück.

Sie können Test-PSSessionConfigurationFile verwenden, um eine beliebige Sitzungskonfigurationsdatei zu testen, einschließlich Dateien, die das Cmdlet New-PSSessionConfiguration erstellt. Weitere Informationen finden Sie im Hilfethema zum Cmdlet "Test-PSSessionConfigurationFile".

Entfernen einer Sitzungskonfigurationsdatei

Sie können eine Sitzungskonfigurationsdatei nicht aus einer Sitzungskonfiguration entfernen. Sie können die Datei jedoch durch eine neue Datei ersetzen, die die Standardeinstellungen verwendet. Dadurch werden die einstellungen, die von der ursprünglichen Konfigurationsdatei verwendet werden, effektiv abgebrochen.

Um eine Sitzungskonfigurationsdatei zu ersetzen, erstellen Sie eine neue Sitzungskonfigurationsdatei, die die Standardeinstellungen verwendet, und verwenden Sie dann das Cmdlet Set-PSSessionConfiguration, um die benutzerdefinierte Sitzungskonfigurationsdatei durch die neue Datei zu ersetzen.

Die folgenden Befehle erstellen beispielsweise eine Standardkonfigurationsdatei für Sitzungen und ersetzen dann die aktive Sitzungskonfigurationsdatei in der NoLanguage-Sitzungskonfiguration.

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

Wenn diese Befehle abgeschlossen sind, stellt die NoLanguage-Sitzungskonfiguration tatsächlich vollständige Sprachunterstützung (die Standardeinstellung) für alle Sitzungen bereit, die mit dieser Sitzungskonfiguration erstellt wurden.

Anzeigen der Eigenschaften einer Sitzungskonfiguration Die Sitzungskonfigurationsobjekte, die Sitzungskonfigurationen mithilfe von Sitzungskonfigurationsdateien darstellen, verfügen über zusätzliche Eigenschaften, mit denen sie die Sitzungskonfiguration leicht erkennen und analysieren können. (Beachten Sie, dass der unten gezeigte Typname eine formatierte Ansichtsdefinition enthält.) Sie können die Eigenschaften anzeigen, indem Sie das Cmdlet Get-PSSessionConfiguration ausführen und die zurückgegebenen Daten an das Cmdlet "Get-Member" weiterleiten:

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...

Diese Eigenschaften erleichtern die Suche nach bestimmten Sitzungskonfigurationen. Sie können beispielsweise die ExecutionPolicy-Eigenschaft verwenden, um eine Sitzungskonfiguration zu finden, die Sitzungen mit der RemoteSigned-Ausführungsrichtlinie unterstützt. Beachten Sie, dass der Befehl möglicherweise nicht alle qualifizierenden Sitzungskonfigurationskonfigurationen zurückgibt, da die ExecutionPolicy-Eigenschaft nur für Sitzungen vorhanden ist, die Sitzungskonfigurationen verwenden.

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

Der folgende Befehl ruft Sitzungskonfigurationen ab, in denen runAsUser der Exchange-Administrator ist.

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

Verwenden Sie das Cmdlet Get-PSSessionCapability, um Informationen zu den Rollendefinitionen anzuzeigen, die einer Konfiguration zugeordnet sind. Mit diesem Cmdlet können Sie die Befehle und Umgebung bestimmen, die bestimmten Benutzern in bestimmten Endpunkten zur Verfügung stehen.

Hinweise

Sitzungskonfigurationen unterstützen auch einen Sitzungstyp, der als "leere" Sitzung bezeichnet wird. Mit einem leeren Sitzungstyp können Sie benutzerdefinierte Sitzungen mit ausgewählten Befehlen erstellen. Wenn Sie einer leeren Sitzung keine Module, Funktionen oder Skripts hinzufügen, ist die Sitzung auf Ausdrücke beschränkt und ist möglicherweise nicht praktisch. Die SessionType-Eigenschaft teilt Ihnen mit, ob Sie mit einer leeren Sitzung arbeiten.

Weitere Informationen