For the complete documentation index, see llms.txt. This page is also available as Markdown.

Variables

Informations sur les variables PowerShell Universal.

Les variables permettent de définir globalement des variables disponibles dans les scripts. Vous pouvez également importer des secrets qui sont aussi disponibles dans les scripts ou en tant que références d'exécution.

Les variables sont stockées dans le fichier de configuration variables.ps1.

Création d'une variable

Pour créer une variable, accédez à la page Platform \ Variables. Cliquez sur Create Variable pour définir une nouvelle variable.

Boîte de dialogue de création de variable

Les variables seront ajoutées à vos scripts avant leur exécution.

Création d'une variable secrète

Les variables secrètes sont stockées dans le coffre sélectionné. La valeur de ces variables n'est jamais stockée dans Universal. Pour définir une nouvelle variable secrète, cliquez sur Create Secret Variable sur la page des variables et sélectionnez l'onglet Secret.

Dans cette boîte de dialogue, vous pourrez définir des chaînes et des PSCredentials dans le coffre spécifié.

Boîte de dialogue de variable secrète

Format des informations d'identification

Dans certains environnements, il peut être nécessaire de spécifier le nom de domaine dans le champ du nom d'utilisateur. Vous pouvez le spécifier au format domain\user ou user@domain. Si vous ne le faites pas, vous recevrez des erreurs lors de la tentative de démarrage de processus, tels que des scripts ou des tableaux de bord, sous ce compte utilisateur.

Comptes de service gérés de groupe

Lorsque vous utilisez des comptes de service gérés de groupe (GMSA), vous devez vous assurer que la machine et le compte ont accès au compte GMSA. Vous pouvez suivre le guide Microsoft ici. Une fois la configuration terminée, créez de nouvelles informations d'identification dans la gestion des secrets PowerShell Universal et sélectionnez l'option Password Not Required. Saisissez le compte GMSA (p. ex. domain\user$). Tant que le compte d'hébergement dispose des privilèges appropriés, vous pourrez exécuter des tâches sous le compte GMSA.

Validation des informations d'identification

Sous Windows, vous pouvez valider les informations d'identification avant d'enregistrer leur valeur. Cliquez sur le bouton Validate dans le champ du mot de passe pour tenter une connexion locale de l'utilisateur. Ce bouton n'apparaîtra pas sur les systèmes autres que Windows.

Rôles

Les variables secrètes peuvent inclure un contrôle d'accès basé sur les rôles. Les rôles limitent les personnes pouvant utiliser le secret dans leurs scripts et en tant que références d'exécution.

Lorsqu'un secret a un rôle défini, il ne sera pas accessible dans les ressources qui ne peuvent pas fournir ce rôle. Cela peut inclure les éléments suivants :

  • Tâches planifiées

  • API ou applications non authentifiées

  • Terminaux

Coffres

Base de données

Le coffre de base de données stocke les secrets dans la base de données PowerShell Universal. Ces secrets sont chiffrés à l'aide du chiffrement AES avec une clé personnalisable. Vous pouvez personnaliser la clé en spécifiant Secrets \ Database \ EncryptionKey.

appsettings.json

Vous pouvez configurer ce paramètre dans appsettings.json.

Variable d'environnement

Vous pouvez configurer ce paramètre à l'aide d'une variable d'environnement.

BuiltInLocalVault

Les valeurs des secrets avec le BuiltInLocalVault sont stockées dans l'instance du gestionnaire d'informations d'identification Windows du principal de sécurité qui exécute PSU. Par exemple, le compte de service de l'utilisateur exécutant le service Universal. Si vous changez d'utilisateur (par exemple en exécutant le service sous un compte de service), le nouveau compte n'aura pas accès aux secrets de l'utilisateur précédent et vous devrez ajouter de nouveau ces secrets.

PSUSecretStore

Le coffre PSUSecretStore est intégré au module Microsoft SecretStore pour stocker les secrets dans un fichier multiplateforme. Ce fichier est lié au compte utilisateur actuel exécutant PowerShell Universal. Le mot de passe du coffre est stocké dans appsettings.json.

Az.KeyVault

Par défaut, nous n'incluons pas l'extension Azure Key Vault directement dans PowerShell Universal. À partir de PowerShell Universal v4.0.11, un conteneur incluant les modules Az.Accounts et Az.KeyVault requis est disponible pour vous permettre d'utiliser KeyVault immédiatement. Celui-ci est disponible sur Docker Hub.

Vous trouverez ci-dessous comment le configurer. Cet exemple utilise une version d'application web hébergée sur Azure de PowerShell Universal.

Dans Azure, vous devrez configurer une identité gérée pour votre application web. Cette étape n'est pas nécessairement requise si vous exécutez en dehors d'Azure. Vous pouvez activer l'identité gérée sous la page Identity de votre application web.

Ensuite, vous devrez autoriser votre identité gérée à accéder à votre coffre de clés et à lire votre abonnement. Vous pouvez ajouter l'identité gérée au groupe Reader intégré pour autoriser l'accès à l'abonnement.

Puis, tous les privilèges de gestion des secrets et des clés ont été accordés à l'identité gérée dans la ressource Key Vault.

Enfin, vous devrez enregistrer le coffre de clés et vous connecter à Azure au démarrage de l'application web. Cela peut être accompli à l'aide des modules Az.Account et Az.KeyVault.

Après avoir déployé votre application web, vous devrez d'abord installer les modules Az.Account et Az.KeyVault. Vous pouvez le faire sur la page des modules. Ils seront installés dans le référentiel local de l'application web.

Ensuite, créez un script dans PowerShell Universal pour vous connecter à Azure et enregistrer le coffre. Exécutez le script pour vérifier qu'il fonctionne correctement.

Désormais, lors de la création de secrets, vous verrez AzureKeyVault disponible.

Sélecteur de coffre pour les variables secrètes

Pour s'assurer que l'application est connectée à Azure et que le coffre de clés est enregistré, exécutez le script dans vaults.ps1. Nous recommandons d'exécuter le script dans un processus PowerShell externe pour éviter les conflits d'assembly avec les DLL de PowerShell Universal.

Ce script s'exécute avant l'enregistrement des variables et la localisation des coffres. Vous pouvez créer ce fichier directement dans le répertoire Repository\.universal. Il sera exécuté au démarrage du système avant les autres scripts de configuration.

vaults.ps1

Le fichier vaults.ps1 contient les commandes d'enregistrement des coffres. Bien que l'exemple ci-dessus définisse un enregistrement de coffre de secrets Azure KeyVault, vous pouvez en réalité inclure tout enregistrement de coffre dont vous avez besoin dans ce fichier.

Vous pouvez modifier les coffres en cliquant sur Platform \ Variables \ Vaults, puis accéder à l'onglet vaults.ps1.

Importation de variables secrètes

Vous pouvez également importer des secrets préexistants en tant que variables dans Universal. Les valeurs des variables ne sont pas importées, mais seront recherchées lors de l'exécution. Cliquez sur le bouton Import Secret pour importer des secrets.

Utilisation des variables

Les variables peuvent être utilisées dans les API, les scripts et les tableaux de bord. Lors de l'utilisation des environnements par défaut, toutes les variables sont automatiquement importées. Cela est accompli en spécifiant le paramètre -Variable de New-PSUEnvironment avec un caractère générique (*). Si vous utilisez vos propres environnements, vous devrez configurer les variables que vous souhaitez inclure. Vous pouvez référencer une variable comme n'importe quelle autre variable PowerShell. La variable contiendra la valeur que vous avez définie. Si vous utilisez un secret, elle contiendra la valeur du secret.

Vous pouvez personnaliser les variables autorisées dans un environnement en personnalisant le paramètre -Variable des environnements.

Consultez Environnements pour plus d'informations.

Portée des secrets

Pour accéder aux secrets que vous avez ajoutés à PowerShell Universal, vous pouvez utiliser la portée $Secret. Par exemple, si vous avez défini un secret nommé Credential, vous pouvez accéder à ce secret partout avec la portée des secrets. Vous ne pouvez pas définir des secrets à l'aide de la portée des secrets.

Accès aux variables par nom

Vous pouvez accéder aux variables par nom en utilisant le préfixe $Secret:.

Accès aux valeurs de manière dynamique

Vous pouvez accéder à la portée des secrets de manière dynamique en utilisant Get-Item. La portée des secrets est implémentée en tant que fournisseur. Cela est utile si vous n'avez pas de noms de variables statiques.

ForEach-Object -Parallel

Pour utiliser des secrets avec ForEach-Object et le paramètre -Parallel, vous devrez tirer parti du mot-clé $using.

Configuration du mot de passe PSUSecretStore

Par défaut, le mot de passe du coffre PSUSecretStore est stocké dans appsettings.json sous Secrets \ SecretStore \ Password.

Variables intégrées

Les variables suivantes sont disponibles dans tous les environnements de PowerShell Universal.

Nom
Type
Description

$PSUEnvironment

string

Le nom de l'environnement dans lequel le script s'exécute (p. ex. Integrated)

$Repository

string

Le chemin absolu vers le dossier du référentiel.

API

Il existe un ensemble de variables prédéfinies disponibles dans les points de terminaison API. Vous pourrez utiliser ces variables dans vos scripts.

Variable
Description
Type

$Url

URL utilisée par le client pour appeler le point de terminaison

String

$Method

La méthode HTTP utilisée pour appeler le point de terminaison

String

$Headers

En-têtes fournis par le client pour appeler le point de terminaison

Hashtable

$Body

La chaîne encodée en UTF8 du contenu de la requête

String

$Data

Tableau d'octets binaires pour le contenu de la requête

Byte[]

$RemoteIpAddress

L'adresse IP distante utilisée pour effectuer la requête.

String

$LocalIpAddress

L'adresse IP locale utilisée pour traiter la requête.

String

$RemotePort

Le port distant utilisé pour effectuer la requête.

Integer

$LocalPort

Le port local utilisé pour traiter la requête.

Integer

$Identity

Le nom d'identité du principal accédant à l'API.

String

$UrlDefinition

La définition de l'URL.

String

$ConnectionId

String

$SessionId

String

$RequestId

String

$ClaimsPrincipal

Le principal de revendications de l'utilisateur actuel. Il s'agit du même objet que celui fourni aux stratégies d'accès basées sur les rôles.

ClaimPrincipal

Applications

Vous trouverez ci-dessous les variables disponibles dans les applications, en plus des variables globales.

Nom
Description
Type

$User

Le nom d'utilisateur de l'utilisateur connecté. $Null si l'authentification est désactivée.

String

$Roles

Les rôles accordés à l'utilisateur. $Null si l'authentification est désactivée.

String[]

$RemoteIpAddress

L'adresse IP distante de l'utilisateur connecté.

String

$RemotePort

Le port distant de l'utilisateur connecté.

Int

$ClaimsPrincipal

Le principal de revendications de l'utilisateur actuel. Il s'agit du même objet que celui fourni aux stratégies d'accès basées sur les rôles.

ClaimPrincipal

$Headers

Les en-têtes fournis par le navigateur.

hashtable

$Cookies

Les cookies de requête fournis par le navigateur.

hashtable

$PSUAppToken

Le jeton d'application de l'utilisateur actuel. Disponible uniquement lorsque -GrantAppToken est activé.

string

$PSUComputerName

L'URL du serveur PSU. Disponible uniquement lorsque -GrantAppToken est activé.

string

$DashboardName

Le nom de l'application actuelle

string

$Query

Les paramètres de chaîne de requête de l'URL de l'application

Hashtable

$RefreshToken

Le jeton d'actualisation lors de l'utilisation de OpenID Connect

string

$AccessToken

Le jeton d'application lors de l'utilisation de OpenID Connect

string

$UDPage

Le nom de la page actuelle.

string

Scripts

Il existe plusieurs variables intégrées définies lors de l'exécution d'une tâche. Vous pouvez utiliser ces variables dans vos scripts pour récupérer des informations sur la tâche en cours.

Nom
Description

$UAJob

La tâche en cours d'exécution. Elle inclura des propriétés telles que le script, l'utilisateur ayant démarré la tâche et la date de démarrage.

$UAJobId

L'identifiant de la tâche en cours d'exécution.

$UAScript

Le script en cours d'exécution. Il inclura des propriétés telles que le nom du script et le chemin vers le script.

$UAScriptId

L'identifiant du script en cours d'exécution.

$UASchedule

La planification utilisée pour démarrer le script.

$UAScheduleId

L'identifiant de la planification ayant démarré le script.

$AccessToken

Lors de l'utilisation de l'authentification OIDC, vous pouvez récupérer le jeton d'accès de l'utilisateur actuel pour accéder à des ressources en son nom.

$Roles

Les rôles de l'appelant du script.

Structure de l'objet $UAJob

Notez que les propriétés peuvent être nulles. Les objets DateTime sont retournés dans le fuseau horaire UTC.

Récupération de l'utilisateur ayant démarré un script

Vous pouvez récupérer le nom de l'utilisateur ayant démarré le script en utilisant la variable UAJob.

Vérification si une tâche a été exécutée manuellement

Vous pouvez vérifier si une tâche a été exécutée manuellement en utilisant les propriétés Schedule et Trigger.

Variables de préférence

Les variables de préférence peuvent être configurées sur un script, lors de l'exécution d'une tâche et au niveau global. Celles-ci incluent :

  • DebugPreference

  • ErrorActionPreference

  • InformationPreference

  • ProgressPreference

  • VerbosePreference

  • WarningPreference

Les variables de préférence ont une priorité. La liste suivante est ordonnée par priorité. Par exemple, si un script définit manuellement la variable $DebugPreference, elle remplacera la valeur définie dans la boîte de dialogue des propriétés du script.

  • Script

  • Run Dialog ou Invoke-PSUScript

  • Propriétés du script

  • Paramètres globaux

API

Mis à jour

Ce contenu vous a-t-il été utile ?