Environnements
Par défaut, l'authentification et l'autorisation se produisent dans le processus Universal.Server.exe. Pour les exécuter à partir d'un processus différent, vous pouvez sélectionner un environnement en définissant le paramètre -SecurityEnvironment de Set-PSUSetting dans settings.ps1. Voir Sécurité pour plus d'informations à ce sujet.
Les environnements d'exécution définissent le runtime PowerShell, les modules, les variables et les paramètres d'exécution utilisés par les scripts, les API, les applis, les tâches d'automatisation et les processus de sécurité. Gérez-les sous Gérer > Environnements > Environnements ou dans environments.ps1.
Choisir un type d'environnement
Intégré
S'exécute directement dans le processus du serveur PowerShell Universal.
PowerShell 7
Utilise l'hôte PowerShell 7 inclus avec PowerShell Universal.
PowerShell 7 (isolé)
Utilise multi-pwsh pour exécuter une version de PowerShell 7 sélectionnée, optionnellement dans un environnement virtuel géré.
Windows PowerShell 5.1
Utilise le runtime Windows PowerShell installé sur le serveur.
Personnalisé
Démarre l'exécutable et les arguments que vous spécifiez.
Conteneur
S'exécute dans l'image de conteneur Devolutions Agent configurée.
Tous les environnements peuvent définir des modules, des variables PowerShell, des entrées PSModulePath, des scripts de démarrage et des paramètres avancés de runspace. Sélectionnez un environnement par son nom lors de la configuration d'un script, d'une planification, d'une API, d'une appli, d'un terminal ou d'un environnement de sécurité.
Configurer les ressources
Utilisez l'onglet Ressources lors de la modification d'un environnement pour configurer ces paramètres :
Modules : noms de modules ou chemins de fichiers de modules que PowerShell Universal importe lorsqu'il crée des runspaces.
Variables : noms des variables PowerShell Universal à rendre disponibles. Utilisez
*pour inclure toutes les variables correspondantes.PSModulePath : chemins de recherche de modules additionnels pour l'environnement.
Scripts de démarrage : scripts relatifs au dépôt qui s'exécutent lorsqu'un nouveau runspace est créé.
Les scripts de démarrage s'exécutent une fois pour chaque nouveau runspace. Ils s'exécutent une fois au démarrage d'une tâche, mais peuvent s'exécuter plus souvent pour les API et les applis, au fur et à mesure que leurs runspaces sont créés. Les variables de plateforme ne sont pas disponibles dans les scripts de démarrage.
Environnements PowerShell 7 isolés
Un environnement isolé utilise multi-pwsh au lieu de l'hôte PowerShell inclus avec PowerShell Universal. Choisissez ce type lorsqu'un script nécessite une version précise de PowerShell 7 ou une isolation de processus plus forte par rapport au SDK PowerShell et aux assemblages chargés du serveur.
Chaque environnement isolé doit avoir une Version de PowerShell. PowerShell Universal rejette un environnement isolé qui n'en spécifie pas.
Installer et sélectionner des versions de PowerShell
Allez à Gérer > Environnements > Versions de PowerShell.
Entrez un sélecteur multi-pwsh tel que
stable,preview,ltsou7.4, puis sélectionnez Installer.Actualisez la liste des versions. Elle affiche chaque version, son chemin, sa portée et si elle est disponible pour les environnements isolés.
Créez ou modifiez un environnement, sélectionnez PowerShell 7 (isolé), puis sélectionnez une version isolée installée.
Seules les versions marquées Isolé sont sélectionnables pour les environnements isolés. Vous pouvez supprimer les versions installées par multi-pwsh à partir du même onglet lorsqu'elles ne sont plus nécessaires.
Créez un environnement isolé dans la configuration avec une version concrète ou un sélecteur multi-pwsh :
Environnements virtuels gérés
Activez Virtuel sur un environnement isolé pour l'exécuter dans un environnement virtuel multi-pwsh géré. PowerShell Universal crée l'environnement virtuel avant son utilisation et le sélectionne chaque fois que l'environnement démarre une tâche.
L'identité de l'environnement virtuel géré est dérivée du nom de l'environnement, de la version de PowerShell, des modules, de PSModulePath et des paramètres de script de démarrage. La modification de ces paramètres crée une nouvelle identité gérée. PowerShell Universal nettoie les environnements virtuels gérés qui ne sont plus référencés par un environnement.
Utilisez un environnement virtuel lorsque vous voulez que l'état du runtime multi-pwsh reste isolé des autres environnements. Les environnements de conteneur utilisent aussi un environnement virtuel géré lorsque Virtuel est activé ou lorsque l'environnement a des modules configurés.
Prise en charge de Devolutions Agent
Lorsqu'une tâche cible un Devolutions Agent connecté, PowerShell Universal utilise le sélecteur de version de PowerShell de l'environnement avec l'exécutable multi-pwsh de l'agent. Pour un environnement isolé ou de conteneur qui utilise un environnement virtuel géré, le serveur exporte cet environnement virtuel et l'agent l'importe avant le démarrage de la tâche.
Ce transfert est automatique et utilise une URL de téléchargement authentifiée de courte durée. L'agent réutilise un environnement virtuel correspondant déjà importé. Configurez le même environnement normalement, puis choisissez le Devolutions Agent ou le groupe d'ordinateurs dans les options d'exécution ou de planification.
Environnements PowerShell 7 minimaux
Activez Minimal sur un environnement PowerShell 7 pour exécuter les tâches dans un sous-processus PowerShell dédié au moyen de la communication à distance PowerShell locale. Ce mode évite de charger les assemblages d'hébergement normaux de PowerShell Universal dans le processus du script, ce qui est utile pour les scripts et les modules qui ont des conflits de liaison d'assemblage avec le serveur.
Le mode minimal est disponible pour les environnements PowerShell 7, Windows PowerShell 5.1 et Personnalisé. PowerShell Universal conserve la sortie formatée et la sortie de pipeline de la tâche pour les exécutions PowerShell 7 minimales, de sorte que la sortie reste disponible dans le journal des tâches et l'historique des tâches.
Les environnements minimaux ont tout de même des limitations importantes :
Ils ne prennent pas en charge la rétroaction, le rapport de progression, les secrets ni les applets de commande intégrées de Universal.
Les valeurs des variables non secrètes configurées sont fournies comme variables d'environnement de processus.
Utilisez l'environnement PowerShell 7 normal lorsque le script nécessite une intégration complète avec l'hôte PowerShell Universal.
Pour l'activer dans la console d'administration, modifiez un environnement PowerShell 7 et sélectionnez Minimal. Dans la configuration :
Un environnement minimal personnalisé peut exécuter un autre exécutable de ligne de commande. Utilisez {scriptPath} dans ses arguments lorsque l'exécutable doit recevoir le chemin de script résolu.
Environnements standards
Intégré
L'environnement Intégré exécute les scripts directement dans le processus du serveur PowerShell Universal. Il évite la sérialisation interprocessus et est simple à configurer, mais il ne peut pas s'exécuter avec des identifiants alternatifs ni utiliser une autre version de PowerShell. Comme les scripts partagent le processus du serveur, des scripts problématiques peuvent affecter la stabilité de la plateforme.
L'environnement Intégré est toujours disponible. Vous pouvez tout de même configurer des modules ou des runspaces persistants pour celui-ci dans environments.ps1 :
PowerShell 7
L'environnement PowerShell 7 standard utilise l'hôte PowerShell inclus avec PowerShell Universal. C'est la valeur par défaut recommandée pour une large compatibilité avec les modules tiers. Si un script nécessite Windows Forms ou une autre dépendance propre à Windows PowerShell, utilisez plutôt Windows PowerShell 5.1 ou un environnement personnalisé.
Windows PowerShell 5.1
Windows PowerShell 5.1 utilise le runtime Windows PowerShell installé sur le serveur. Utilisez-le pour les scripts et les modules qui nécessitent Windows PowerShell.
Utiliser les environnements dans PowerShell Universal
API : définissez
-ApiEnvironmentavecSet-PSUSettingdanssettings.ps1.Automatisation : définissez
-Environmentpour les scripts et les planifications, ou sélectionnez-le au démarrage d'une tâche.Applis : définissez
-EnvironmentavecNew-PSUApp.Sécurité : définissez
-SecurityEnvironmentavecSet-PSUSettinglorsque l'authentification et l'autorisation doivent s'exécuter à l'extérieur du processus du serveur.
Compatibilité Windows PowerShell
PowerShell 7 peut automatiquement utiliser la communication à distance Windows PowerShell locale lorsqu'une commande ou un module n'est pas disponible. Cette fonctionnalité de compatibilité crée un processus Windows PowerShell par runspace et peut augmenter considérablement le nombre de processus, l'utilisation de la mémoire, l'utilisation du processeur et la surcharge de sérialisation.
Désactivez la compatibilité Windows PowerShell implicite dans l'onglet Avancé de l'environnement lorsqu'elle n'est pas requise. Elle est désactivée pour l'environnement Intégré et ne peut pas y être activée.
Si vous devez utiliser la compatibilité, supprimez la session de compatibilité une fois la commande terminée :
Applets de commande PowerShell
Gérez les environnements avec New-PSUEnvironment, Get-PSUEnvironment, Set-PSUEnvironment et Remove-PSUEnvironment.
Mis à jour
Ce contenu vous a-t-il été utile ?