about_Session_Configuration_Files

Description courte

Décrit les fichiers de configuration de session, qui sont utilisés dans une configuration de session (également appelé « point de terminaison ») pour définir l’environnement des sessions qui utilisent la configuration de session.

Description longue

Ces informations s’appliquent uniquement à PowerShell s’exécutant sur Windows.

Un « fichier de configuration de session » est un fichier texte avec une extension de nom de fichier .pssc qui contient une table de hachage des propriétés et des valeurs de configuration de session. Vous pouvez utiliser un fichier de configuration de session pour définir les propriétés d’une configuration de session. Cela définit l’environnement de toutes les sessions PowerShell qui utilisent cette configuration de session.

Les fichiers de configuration de session facilitent la création de configurations de session personnalisées sans utiliser d’assemblys ou de scripts C# complexes.

Une « configuration de session » ou « point de terminaison » est une collection de paramètres d’ordinateur local qui déterminent des éléments tels que les utilisateurs qui peuvent créer des sessions sur l’ordinateur ; les commandes que les utilisateurs peuvent exécuter dans ces sessions ; et si la session doit s’exécuter en tant que compte virtuel privilégié. Pour plus d'informations sur les configurations de session, consultez about_Session_Configurations.

Les configurations de session ont été introduites dans Windows PowerShell 2.0 et les fichiers de configuration de session ont été introduits dans Windows PowerShell 3.0. Vous devez utiliser Windows PowerShell 3.0 pour inclure un fichier de configuration de session dans une configuration de session. Toutefois, les utilisateurs de Windows PowerShell 2.0 (et versions ultérieures) sont affectés par les paramètres de la configuration de session.

Création de sessions personnalisées

Vous pouvez personnaliser de nombreuses fonctionnalités d’une session PowerShell en spécifiant les propriétés de session dans une configuration de session. Vous pouvez personnaliser une session en écrivant un programme C# qui définit un runspace personnalisé, ou vous pouvez utiliser un fichier de configuration de session pour définir les propriétés des sessions créées à l’aide de la configuration de session. En règle générale, il est plus facile d’utiliser le fichier de configuration de session que d’écrire un programme C#.

Vous pouvez utiliser un fichier de configuration de session pour créer des éléments tels que des sessions entièrement fonctionnelles pour les utilisateurs hautement approuvés ; sessions verrouillées qui autorisent un accès minimal ; sessions conçues pour des tâches particulières et qui contiennent uniquement les modules requis pour ces tâches ; et les sessions où les utilisateurs non privilégiés ne peuvent exécuter que des commandes spécifiques en tant que compte privilégié.

En plus de cela, vous pouvez gérer si les utilisateurs de la session peuvent utiliser des éléments de langage PowerShell tels que des blocs de script ou s’ils ne peuvent exécuter que des commandes. Vous pouvez gérer la version des utilisateurs PowerShell qui peuvent s’exécuter dans la session ; gérer les modules importés dans la session ; et gérer les applets de commande, les fonctions et les alias que les utilisateurs de session peuvent exécuter. Lorsque vous utilisez le champ RoleDefinitions, vous pouvez donner aux utilisateurs différentes fonctionnalités de la session en fonction de l’appartenance au groupe.

Pour plus d’informations sur RoleDefinitions et sur la définition de cette valeur, consultez la rubrique d’aide pour l’applet de commande New-PSRoleCapabilityFile.

Création d’un fichier de configuration de session

Le moyen le plus simple de créer un fichier de configuration de session consiste à utiliser l’applet de commande New-PSSessionConfigurationFile. Cette applet de commande génère un fichier qui utilise la syntaxe et le format corrects, et qui vérifie automatiquement la plupart des valeurs de propriété du fichier de configuration.

Pour obtenir des descriptions détaillées des propriétés que vous pouvez définir dans un fichier de configuration de session, consultez la rubrique d’aide de l’applet de commande New-PSSessionConfigurationFile.

La commande suivante crée un fichier de configuration de session qui utilise les valeurs par défaut. Le fichier de configuration résultant utilise uniquement les valeurs par défaut, car aucun paramètre autre que le paramètre Path (qui spécifie le chemin d’accès du fichier) est inclus :

New-PSSessionConfigurationFile -Path .\Defaults.pssc

Pour afficher le nouveau fichier de configuration dans votre éditeur de texte par défaut, utilisez la commande suivante :

Invoke-Item -Path .\Defaults.pssc

Pour créer une configuration de session pour les sessions dans lesquelles l’utilisateur peut exécuter des commandes, mais pas utiliser d’autres éléments du langage PowerShell, tapez :

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

Dans la commande précédente, la définition du paramètre LanguageMode sur NoLanguage empêche les utilisateurs d’effectuer des opérations telles que l’écriture ou l’exécution de scripts ou l’utilisation de variables.

Pour créer une configuration de session pour les sessions dans lesquelles les utilisateurs peuvent utiliser uniquement des applets de commande Get, tapez :

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

Dans l’exemple précédent, la définition du paramètre VisibleCmdlets sur Get-* limite les utilisateurs aux applets de commande qui ont des noms qui commencent par la valeur de chaîne « Get- ».

Pour créer une configuration de session pour les sessions qui s’exécutent sous un compte virtuel privilégié au lieu des informations d’identification de l’utilisateur, tapez :

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

Pour créer une configuration de session pour les sessions dans lesquelles les commandes visibles par l’utilisateur sont spécifiées dans un fichier de fonctionnalités de rôle, tapez :

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

Utilisation d’un fichier de configuration de session

Vous pouvez inclure un fichier de configuration de session lorsque vous créez une configuration de session ou ajoutez un fichier à la configuration de session ultérieurement.

Pour inclure un fichier de configuration de session lors de la création d’une configuration de session, utilisez le paramètre Path de l’applet de commande Register-PSSessionConfiguration.

Par exemple, la commande suivante utilise le fichier NoLanguage.pssc lorsqu’elle crée une configuration de session NoLanguage.

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

Quand une nouvelle session NoLanguage démarre, les utilisateurs n’ont accès qu’aux commandes PowerShell.

Pour ajouter un fichier de configuration de session à une configuration de session existante, utilisez l’applet de commande Set-PSSessionConfiguration et le paramètre Path. Cela affecte les nouvelles sessions créées avec la configuration de session spécifiée. Notez que l’applet de commande Set-PSSessionConfiguration modifie la session elle-même et ne modifie pas le fichier de configuration de session.

Par exemple, la commande suivante ajoute le fichier NoLanguage.pssc à la configuration de session LockedDown.

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

Lorsque les utilisateurs utilisent la configuration de session LockedDown pour créer une session, ils pourront exécuter des applets de commande, mais ils ne pourront pas créer ou utiliser des variables, attribuer des valeurs ou utiliser d’autres éléments de langage PowerShell.

La commande suivante utilise l’applet de commande New-PSSession pour créer une session sur l’ordinateur Srv01 qui utilise la configuration de session LockedDown, en enregistrant une référence d’objet à la session dans la variable $s. La liste de contrôle d’accès (liste de contrôle d’accès) de la configuration de session détermine qui peut l’utiliser pour créer une session.

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

Étant donné que les contraintes NoLanguage ont été ajoutées à la configuration de session LockedDown, les utilisateurs des sessions LockedDown ne pourront exécuter que des commandes et des applets de commande PowerShell. Par exemple, les deux commandes suivantes utilisent l’applet de commande Invoke-Command pour exécuter des commandes dans la session référencée dans la variable $s. La première commande, qui exécute l’applet de commande Get-UICulture et n’utilise aucune variable, réussit. La deuxième commande, qui obtient la valeur de la variable $PSUICulture, échoue.

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

Modification d’un fichier de configuration de session

Tous les paramètres d’une configuration de session, à l’exception de RunAsVirtualAccount Et RunAsVirtualAccountGroups, peuvent être modifiés en modifiant le fichier de configuration de session utilisé par la configuration de session. Pour ce faire, commencez par localiser la copie active du fichier de configuration de session.

Lorsque vous utilisez un fichier de configuration de session dans une configuration de session, PowerShell crée une copie active du fichier de configuration de session et le stocke dans le répertoire $pshome\SessionConfig sur l’ordinateur local.

L’emplacement de la copie active d’un fichier de configuration de session est stocké dans la propriété ConfigFilePath de l’objet de configuration de session.

La commande suivante obtient l’emplacement du fichier de configuration de session pour la configuration de session NoLanguage.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

Cette commande retourne un chemin d’accès de fichier similaire à ce qui suit :

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

Vous pouvez modifier le fichier .pssc dans n’importe quel éditeur de texte. Une fois le fichier enregistré, il sera utilisé par les nouvelles sessions qui utilisent la configuration de session.

Si vous devez modifier les paramètres RunAsVirtualAccount ou RunAsVirtualAccountGroups, vous devez annuler l’inscription de la configuration de session et réinscrire un fichier de configuration de session qui inclut les valeurs modifiées.

Test d’un fichier de configuration de session

Utilisez l’applet de commande Test-PSSessionConfigurationFile pour tester les fichiers de configuration de session modifiés manuellement. Cela est important : si la syntaxe et les valeurs du fichier ne sont pas valides, les utilisateurs ne pourront pas utiliser la configuration de session pour créer une session.

Par exemple, la commande suivante teste le fichier de configuration de session active de la configuration de session NoLanguage.

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

Si la syntaxe et les valeurs du fichier de configuration sont valides Test-PSSessionConfigurationFile retourne True. Si la syntaxe et les valeurs ne sont pas valides, l’applet de commande retourne False.

Vous pouvez utiliser Test-PSSessionConfigurationFile pour tester n’importe quel fichier de configuration de session, y compris les fichiers créés par l’applet de commande New-PSSessionConfiguration. Pour plus d’informations, consultez la rubrique d’aide de l’applet de commande Test-PSSessionConfigurationFile.

Suppression d’un fichier de configuration de session

Vous ne pouvez pas supprimer un fichier de configuration de session d’une configuration de session. Toutefois, vous pouvez remplacer le fichier par un nouveau fichier qui utilise les paramètres par défaut. Cela annule efficacement les paramètres utilisés par le fichier de configuration d’origine.

Pour remplacer un fichier de configuration de session, créez un fichier de configuration de session qui utilise les paramètres par défaut, puis utilisez l’applet de commande Set-PSSessionConfiguration pour remplacer le fichier de configuration de session personnalisé par le nouveau fichier.

Par exemple, les commandes suivantes créent un fichier de configuration de session par défaut, puis remplacent le fichier de configuration de session active dans la configuration de session NoLanguage.

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

Lorsque ces commandes se terminent, la configuration de session NoLanguage fournit en fait une prise en charge complète de la langue (paramètre par défaut) pour toutes les sessions créées avec cette configuration de session.

Affichage des propriétés d’une configuration de session Les objets de configuration de session qui représentent des configurations de session à l’aide de fichiers de configuration de session ont des propriétés supplémentaires qui facilitent la découverte et l’analyse de la configuration de session. (Notez que le nom de type indiqué ci-dessous inclut une définition de vue mise en forme.) Vous pouvez afficher les propriétés en exécutant l’applet de commande Get-PSSessionConfiguration et en pipissant les données retournées vers l’applet de commande 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...

Ces propriétés facilitent la recherche de configurations de session spécifiques. Par exemple, vous pouvez utiliser la propriété ExecutionPolicy pour rechercher une configuration de session qui prend en charge les sessions avec la stratégie d’exécution RemoteSigned. Notez que, étant donné que la propriété ExecutionPolicy existe uniquement sur les sessions qui utilisent des fichiers de configuration de session, la commande risque de ne pas renvoyer toutes les configurations de session éligibles.

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

La commande suivante obtient les configurations de session dans lesquelles RunAsUser est l’administrateur Exchange.

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

Pour afficher des informations sur les définitions de rôle associées à une configuration, utilisez l’applet de commande Get-PSSessionCapability. Cette applet de commande vous permet de déterminer les commandes et l’environnement disponibles pour des utilisateurs spécifiques dans des points de terminaison spécifiques.

Notes

Les configurations de session prennent également en charge un type de session appelé session « vide ». Un type de session vide vous permet de créer des sessions personnalisées avec des commandes sélectionnées. Si vous n’ajoutez pas de modules, de fonctions ou de scripts à une session vide, la session est limitée aux expressions et peut ne pas être d’une utilisation pratique. La propriété SessionType vous indique si vous travaillez ou non avec une session vide.

Voir aussi