Magic Quadrant™ pour la gestion des accès privilégiés 2025 : Netwrix reconnue pour la quatrième année consécutive. Téléchargez le rapport.

Plateforme
Centre de ressourcesBlog
Comment utiliser les variables PowerShell

Comment utiliser les variables PowerShell

Oct 4, 2018

Les variables PowerShell agissent comme des conteneurs pour les données qui peuvent être créées, modifiées et utilisées dans des scripts ou des sessions. Elles prennent en charge plusieurs types, y compris des chaînes de caractères, des entiers, des tableaux et des tables de hachage, et peuvent être définies comme locales, globales ou basées sur un script. Les administrateurs peuvent définir des descriptions, la visibilité et des options, lister ou effacer des variables, et exporter leur contenu. L'utilisation appropriée des variables simplifie l'automatisation et l'efficacité du scripting.

Introduction

Une variable dans PowerShell est un conteneur auquel une valeur est assignée. Considérez-les comme des boîtes nommées où vous pouvez placer des informations à utiliser plus tard. La valeur d'une variable peut être accédée simplement en référençant la variable, et elle peut être modifiée à tout moment en réaffectant la variable avec une nouvelle valeur. Les variables sont très pratiques pour suivre les données dans des scripts ou pendant une session PowerShell.

Exemples de variables PowerShell

Plongeons dans certaines des manières les plus utiles d'utiliser les variables dans PowerShell.

Créer et définir des variables dans PowerShell

Les noms de variables dans PowerShell commencent par un signe dollar ($), et ne sont pas sensibles à la casse, donc, par exemple $VAR et $var font référence à la même variable. Un nom de variable peut contenir des lettres, des chiffres et des traits de soulignement. Bien qu'ils puissent contenir des espaces et d'autres caractères spéciaux, il est préférable d'éviter ceux-ci.

Une fois que vous avez choisi un nom pour une variable dans PowerShell, vous pouvez la créer et lui attribuer une valeur en une seule commande. Par exemple, si vous voulez créer une variable nommée $Greeting et lui assigner la valeur de chaîne Hello, World, vous utiliseriez cette commande :

      $Greeting = "Hello, World"
      

Après cette commande, chaque fois que vous tapez $Greeting, PowerShell remplacera la valeur que vous avez assignée à cette variable, comme montré ci-dessous.

Image

Les guillemets doubles (« ») dans l'exemple précédent indiquent que la valeur est une chaîne de caractères. Voici comment vous pouvez créer une variable et lui attribuer une valeur entière :

      $var1 = 75

$var2 = 25
      

Vous pouvez effectuer des opérations arithmétiques avec des variables numériques, comme montré ici :

Image

Vous pouvez également combiner des chaînes en utilisant l'opérateur plus-signe (+) :

      $var10 = “Complete”

$var11 = “Visibility

$var12 = $var10 + $var11
      
Image

Si vous ajoutez un nombre à une chaîne de caractères, le nombre devient automatiquement une chaîne de caractères :

      $var1 = “Netwrix”

$var2 = 2023
      
Image

Définir ou vérifier le type d'une variable

Les variables dans PowerShell peuvent stocker plusieurs types de données, y compris des chaînes de caractères, des entiers et des objets plus complexes comme des tableaux. Lorsque vous attribuez une valeur à une variable, PowerShell détermine automatiquement le type de données en fonction de la valeur. Cela est connu sous le nom de typage dynamique. Comme mentionné ci-dessus, les chaînes de caractères nécessitent des guillemets.

Voici quelques exemples :

      $var1 = "Hello"   # The type of $var1 is String

$var2 = 25        # The type of $var2 is Integer

$var3 = Get-Date # The type of $var3 is DateTime
      

Pour découvrir le type d'une variable, nous utilisons le paramètre GetType:

      $var5 = “Netwrix”
$var5.GetType () .FullName
      
Image

Les types de variables les plus courants incluent les suivants :

  • Chaîne: Texte (vous pouvez déclarer une chaîne en encadrant le texte avec des guillemets)
  • Entier: Un nombre entier
  • Double: Un nombre qui comprend un point décimal
  • Boolean: Une valeur de vérité, soit $True soit $False
  • DateTime: Une date et une heure
  • Tableau: Une structure de données qui contient une collection d'éléments de même type ou de types différents. Les éléments sont stockés séquentiellement et peuvent être accédés par un indice. Voici un exemple de déclaration d'un tableau :
      $myArray = "apple", "orange", "cherry"
      
  • HashTable: Une structure de données qui comprend une collection non ordonnée de paires clé-valeur. C'est comme un dictionnaire où vous utilisez une clé unique pour stocker et récupérer chaque valeur. Cela rend les hashtables excellents pour les recherches et les scénarios où vous devez facilement rechercher des valeurs. Pour créer une hashtable, vous utilisez @{}. À l'intérieur des accolades, vous spécifiez chaque paire comme la clé suivie d'un signe égal (=) puis la valeur, comme illustré dans cet exemple :
      $myHashtable = @{

    "Fruit1" = "Apple"

    "Fruit2" = "Orange"

    "Fruit3" = "Cherry"

}
      

Définir la portée d'une variable

La portée est la visibilité et l'accessibilité d'une variable. PowerShell dispose de plusieurs portées différentes :

  • Local — Le périmètre actuel
  • Global —Le périmètre qui est en vigueur lorsque PowerShell démarre ou lorsque vous créez une nouvelle session ou un nouvel espace d'exécution
  • Script — Le périmètre qui est créé pendant l'exécution d'un script

Les variables sont spécifiées dans PowerShell comme suit :

      $global:Var1 = "Global Variable"

$script:Var2 = "Script Variable"

$local:Var3 = "Local Variable"
      

Automatisez les tâches avec Netwrix Directory Manager

Simplifiez la gestion des groupes et automatisez les tâches sans scripts PowerShell complexes

Variables publiques vs. privées

La propriété de Visibility d'une variable est liée à sa portée ; elle détermine si vous pouvez voir l'élément en dehors du script dans lequel il a été créé. La propriété de Visibility peut avoir une valeur de Public ou Private. Les variables Private ne peuvent être consultées et modifiées que dans la portée dans laquelle elles ont été créées. Les variables Public sont accessibles depuis n'importe quelle portée.

Lister (Obtenir) les variables dans le contexte actuel

Vous pouvez lister toutes les variables actuelles dans une session PowerShell en utilisant la cmdlet Get-Variable, qui récupère toutes les variables dans la portée actuelle. L'exemple ci-dessous liste certaines des variables utilisées dans les exemples précédents.

Image

Imprimez une variable

Vous pouvez exporter une variable dans un fichier .txt, .csv ou HTML.

Pour écrire dans un fichier .txt, utilisez la commande Out-File :

      $var5 = “Hello World”

$var5 | Out-File c:scriptsHello_World.txt
      

Pour exporter des données vers un fichier .csv, utilisez la commande Export-Csv :

      $var6 = Get-Process

$var6 | SELECT Name, Path | Export-Csv -Path c:scriptsprocesses.csv
      
Image

Et pour écrire dans un fichier HTML, utilisez la commande ConvertTo-Html :

      $var6 = Get-Process

$var6 | ConvertTo-HTML -Property Name, Path>C:scriptprocesses.html
      

Pour lire un fichier que vous avez exporté, utilisez la cmdlet Get-Content :

      Get-Content c:\scripts\processes.csv
      
Image

Effacer une variable

La cmdlet Clear-Variable est utilisée pour supprimer la valeur d'une variable mais laisse l'objet variable lui-même. Lorsqu'une variable est vidée, la variable existe toujours, mais sa valeur est $null. Dans l'exemple ci-dessous, une variable est créée puis vidée, chaque action étant confirmée.

Image

Supprimer une variable

La cmdlet Remove-Variable est utilisée pour supprimer une variable et sa valeur.

Dans l'exemple ci-dessous, une variable appelée Example est créée et se voit attribuer la chaîne de caractères « Hello World! ». La variable est ensuite supprimée par le cmdlet Remove-Variable. Puis le script vérifie la variable et retourne une erreur parce qu'elle n'existe plus.

Image

Notez que la cmdlet Remove-Variable supprime uniquement la variable dans la portée actuelle. Si une variable portant le même nom existe dans une portée parente, cette variable ne sera pas affectée. De même, Remove-Variable n'affecte pas les portées enfants qui pourraient contenir une variable du même nom.

La différence entre les commandes Clear-Variable et Remove-Variable est que vider la variable supprime uniquement la valeur de la variable, tandis que la supprimer efface la variable elle-même.

Paramètres

Les cmdlets discutées ci-dessus prennent divers paramètres. Revoyons les paramètres les plus utiles et leur fonctionnement.

Description

PowerShell variables have a Description property that you can set using the Set-Variable cmdlet with the Description parameter:

      Set-Variable -Name "myVariable" -Description "This is my sample variable"
      

Exclure

Pour exclure certaines variables lorsque vous utilisez la cmdlet Get-Variable, utilisez le paramètre Exclude et spécifiez les noms des variables à exclure. Dans l'exemple ci-dessous, nous créons 4 variables. Nous avons ensuite utilisé la commande Get-Variable -Exclude pour exclure deux d'entre elles.

      $Var1 = "Test1"

$Var2 = "Test2"

$Var3 = "Test3"

$OtherVar = "Other"

Get-Variable -Exclude Var1, OtherVar
      

(Pour inclure uniquement des variables spécifiques, utilisez le paramètre Name comme décrit ci-dessous.)

Force

Vous pouvez utiliser le paramètre Force avec certaines commandes, telles que Set-Variable et Remove-Variable, pour outrepasser toutes les restrictions qui pourraient empêcher la commande de s'achever.

Par exemple, normalement toute tentative de modifier la valeur d'une variable en lecture seule entraînera une erreur, comme illustré ci-dessous :

Image

Toutefois, vous pouvez outrepasser ce comportement avec le paramètre Force:

Image

Nom

Vous pouvez utiliser le paramètre Name pour faire référence à une variable par son nom sans le signe dollar. En particulier, vous pouvez l'utiliser pour obtenir uniquement les variables dont les noms correspondent à un certain motif. Par exemple, en utilisant le cmdlet ci-dessous, vous pouvez récupérer uniquement les variables dont les noms commencent par « Net » :

      Get-Variable -Name "NET*"
      

L'astérisque (*) est un caractère générique qui représente n'importe quel nombre de caractères supplémentaires.

Option

Vous pouvez spécifier le paramètre Option avec le cmdlet Set-Variable. Les valeurs disponibles pour ce paramètre incluent :

  • Aucun (par défaut) : La variable se comporte comme une variable normale.
  • ReadOnly: La variable ne peut être ni modifiée ni supprimée.
  • Constant: La variable ne peut être modifiée ou supprimée, même avec le paramètre Force.
  • Privé: La variable est disponible uniquement dans le contexte actuel.
  • AllScope: La variable est copiée dans tous les nouveaux contextes qui sont créés.

Un exemple de l'option ReadOnly est présenté ici :

Image

PassThru

Par défaut, la plupart des cmdlets qui effectuent une action (comme Set-Variable, New-Item et Remove-Item) ne produisent aucune sortie ; elles complètent simplement l'action en silence. Cependant, si vous utilisez le paramètre PassThru, le cmdlet générera un objet qui représente l'élément que vous avez manipulé avec le cmdlet.

Voici un exemple d'utilisation de PassThru avec Set-Variable:

Image

WhatIf

Vous pouvez utiliser le paramètre WhatIf avec les applets de commande qui apportent des modifications, telles que Set-Variable, Remove-Variable ou Clear-Variable, pour voir ce qui se passerait si vous exécutiez l'applet de commande, sans apporter de modifications réelles. Cela est utile si vous n'êtes pas certain de ce qu'une applet de commande ferait. Un exemple est montré ci-dessous :

Image

Conclusion

Avec une solide compréhension de la manière dont les variables PowerShell peuvent être créées et manipulées, vous pouvez créer des scripts PowerShell pour vous aider dans l'automatisation des tâches, l'administration système, le développement logiciel et plus encore.

Comment Netwrix peut aider

Besoin de sécuriser votre Active Directory et l'environnement Entra ID (Azure AD) de manière plus efficace et efficiente ? Envisagez Netwrix Directory Manager. Ses capacités de gestion automatisée des groupes et des utilisateurs réduisent le risque de violations de données tout en éliminant les tâches administratives manuelles chronophages.

Netwrix Directory Manager vous permet de :

  • Automatisez la provision et la déprovision des utilisateurs depuis votre système d'information RH (HRIS) vers Active Directory, Entra ID et les applications compatibles SCIM, permettant ainsi aux nouveaux employés d'être rapidement productifs et réduisant le risque que des adversaires prennent le contrôle d'identités obsolètes.
  • Mettez à jour automatiquement les groupes d'annuaires en fonction des changements tels que la promotion d'un employé ou son passage à un autre rôle, tel qu'enregistré dans votre système d'information sur les ressources humaines (HRIS). Cette automatisation maintient les droits d'accès à jour en temps quasi réel comme requis pour la sécurité et la conformité, tout en faisant gagner du temps à votre équipe informatique.
  • Déléguez la gestion des groupes et des utilisateurs aux personnes qui savent qui devrait avoir accès à quoi. Des workflows simples permettent aux responsables des lignes de métier de réviser leurs groupes et d'approuver ou de refuser les demandes d'accès des utilisateurs, réduisant ainsi le risque d'avoir des groupes et des utilisateurs sur-privilégiés dans votre annuaire.
  • Gardez l'annuaire propre et plus facile à gérer avec la création, l'expiration et la suppression automatiques des utilisateurs.
  • Maintenez et prouvez la conformité avec les réglementations et normes grâce à une analyse approfondie, une automatisation efficace et des rapports clairs sur les groupes et les membres.

Tutoriel de script Windows PowerShell pour débutants

En savoir plus

Partager sur

En savoir plus

À propos de l'auteur

Asset Not Found

Jonathan Blackwell

Responsable du développement logiciel

Depuis 2012, Jonathan Blackwell, ingénieur et innovateur, a fourni un leadership en ingénierie qui a placé Netwrix GroupID à l'avant-garde de la gestion de groupes et d'utilisateurs pour les environnements Active Directory et Azure AD. Son expérience en développement, marketing et ventes permet à Jonathan de comprendre pleinement le marché de l'Identity Management et la façon de penser des acheteurs.