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.
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 :
Vous pouvez également combiner des chaînes en utilisant l'opérateur plus-signe (+) :
$var10 = “Complete”
$var11 = “Visibility
$var12 = $var10 + $var11
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
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
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.
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
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
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.
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.
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 :
Toutefois, vous pouvez outrepasser ce comportement avec le paramètre Force:
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 :
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:
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 :
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 plusPartager sur
En savoir plus
À propos de l'auteur
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.
En savoir plus sur ce sujet
Supprimer le fichier avec Powershell s'il existe
PowerShell Write to File : "Out-File" et techniques de sortie de fichier
Comment créer de nouveaux utilisateurs Active Directory avec PowerShell
Comment exécuter un script PowerShell
Qu'est-ce que PowerShell ? Un guide complet de ses fonctionnalités et utilisations