Apprendre l’opérateur « Différent de » de PowerShell avec des exemples

Outre être un outil en ligne de commande, PowerShell est un langage de programmation de Microsoft qui vous permet de contrôler et d’automatiser vos systèmes. PowerShell utilise une syntaxe différente pour ses opérateurs par rapport à la plupart des langages de programmation.

Mais une fois que vous comprenez la syntaxe des opérateurs PowerShell, vous verrez qu’il n’est pas difficile à utiliser. L’un des opérateurs les plus courants que vous utiliserez dans PowerShell est l’opérateur de non-égalité (-ne). Cet opérateur vous permet de tester si deux valeurs ne sont pas égales l’une à l’autre.

Dans cet article, vous apprendrez sur l’opérateur de non-égalité PowerShell et comment l’utiliser avec des exemples.

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir un système avec PowerShell installé. Ce tutoriel utilise Windows 10 et PowerShell 7.

Utilisation de l’opérateur de non-égalité PowerShell (Bases)

En résumé, l’opérateur de non-égalité PowerShell (-ne) détermine si la valeur de deux objets n’est pas égale et renvoie une valeur booléenne en fonction du résultat. Si les valeurs ne sont pas égales, le résultat est True; sinon, le résultat est False.

Mais comment et quand utiliser l’opérateur de non-égalité PowerShell ? Les sections suivantes vous enseigneront les bases de l’opérateur de non-égalité PowerShell.

Comparaison de variables

L’un des usages les plus courants de l’opérateur « Différent de » PowerShell est de comparer deux variables. Par exemple, supposez que vous ayez deux variables, `$a` et `$b`, et que vous vouliez voir si elles sont égales. La syntaxe de comparaison est la suivante :

$a -ne $b

Si les valeurs de `$a` et `$b` ne sont pas égales, alors cette comparaison renverra `True`. Sinon, elle renverra False.

1. Exécutez les commandes suivantes dans votre console PowerShell pour créer les variables que vous utiliserez comme exemples. Les variables $a, $b, $c et $d représentent différentes valeurs. Vous pouvez comparer chacune de ces valeurs pour tester si elles sont égales ou non.

Vous attribuez à $c et $d la même valeur pour voir comment l’opérateur « Différent de » PowerShell fonctionne avec des valeurs égales.

$a = 1
$b = 2
$c = 3
$d = 3

2. Maintenant, effectuez la comparaison « Différent de » PowerShell pour voir si les valeurs de $a et $b ne sont pas égales.

$a -ne $b

Le résultat renvoie True car la valeur de $a est 1 et $b est 2, ce qui ne sont pas égaux.

You will see a False output return, as shown in the image below, since the values of $c and $d are equal (3=3). variables with not equal values

3. Comparez maintenant les variables $c et $d pour voir si elles ne sont pas non plus égales.

$c -ne $d

Vous verrez un retour de sortie False, comme indiqué dans l’image ci-dessous, puisque les valeurs de $c et $d sont égales (3=3).

Comparing variables with equal values

Comparaison des valeurs

Lorsque vous travaillez avec PowerShell, tous les objets que vous souhaitez comparer ne sont pas nécessairement dans des variables. Dans ce cas, vous pouvez comparer directement les valeurs avec l’opérateur « Différent de » PowerShell.

Par exemple, la commande ci-dessous compare directement deux valeurs en utilisant l’opérateur « Différent de » PowerShell.

5 -ne 3

Vous verrez un retour de valeur True, comme indiqué ci-dessous puisque les valeurs ne sont pas égales.

Comparing different values using the PowerShell not equal operator

D’autre part, comparer des valeurs égales renverra False.

5 -ne 5
Comparing equal values using the PowerShell not equal operator

Retrait d’une valeur du tableau

L’opérateur PowerShell Not Equal renvoie un résultat booléen pour indiquer si deux valeurs ne sont pas égales. En plus de cette fonction, cet opérateur peut également filtrer des éléments d’un tableau.

Par exemple, créez une variable appelée $numbers contenant un tableau de nombres de 1 à 5.

# Créer un tableau contenant les nombres de 1 à 5.
$numbers = 1..5
# Afficher le tableau
$numbers
Storing an array

Ensuite, exécutez la commande ci-dessous pour renvoyer le tableau à l’exception d’un nombre (4).

$numbers -ne 4

Et maintenant vous pouvez voir que la commande a renvoyé chaque nombre dans le tableau à l’exception du nombre 4.

Filtering an array

Comparer des chaînes de caractères

En plus des nombres, vous pouvez également appliquer la comparaison PowerShell Not Equal sur des chaînes de caractères.

1. Par exemple, supposez que vous ayez deux chaînes de caractères, « Bonjour » et « Monde ». Pour déterminer si les deux chaînes ne sont pas égales, exécutez la commande ci-dessous.

"Hello" -ne "World"

Le résultat est True car « Bonjour » n’est pas égal à « Monde ».

Comparing unequal stings

2. Maintenant, comparez les chaînes « Bonjour » et « bonjour » pour voir si elles sont égales.

"Hello" -ne "hello"

Vous verrez alors que le résultat est False car « Bonjour » est égal à « bonjour ».

Comparing two strings

3. L’opérateur PowerShell « Non égal » n’est pas sensible à la casse. Comme vous pouvez le voir dans l’étape précédente, « Bonjour » est égal à « bonjour ». Mais si vous avez besoin de sensibilité à la casse lors de la comparaison des valeurs de chaîne, remplacez l’opérateur -ne par l’opérateur -cne, ce qui signifie Non égal sensible à la casse.

"Hello" -cne "hello"

Par conséquent, « Bonjour » et « bonjour » ne sont plus égaux selon PowerShell.

“Hello” and “hello”

Utilisation de l’opérateur Non égal de PowerShell dans le monde réel (Exemples)

Maintenant que vous comprenez le concept de base de l’opérateur Non égal de PowerShell, les sections suivantes vous permettront de découvrir certaines de ses utilisations dans le monde réel.

Surveillance de l’état des services

A staple of Windows systems administration is monitoring the server service status. This task involves filtering out which services whose Status Is Not Running.

Par exemple, exécutez la cmdlet Get-Service pour afficher tous les services sur la machine locale.

Get-Service

Vous pouvez voir tous les services arrêtés et en cours d’exécution dans la sortie ci-dessous.

Display all services

Maintenant, pour filtrer uniquement les services qui ne sont pas En cours d'exécution, exécutez la commande ci-dessous et appliquez l’opérateur -ne comme suit.

Get-Service | Where-Object {$_.Status -ne "Running"}

Comme vous pouvez le voir ci-dessous, la colonne État ne montre que les services arrêtés après l’application de la comparaison Non égal de PowerShell.

Filtering non-running services

De même, exécutez la commande ci-dessous pour renvoyer les services dont l'état n'est pas Arrêté.

Get-Service | Where-Object {$_.Status -ne "Stopped"}

Cette fois, vous ne voyez que les services qui sont en cours d’exécution.

Showing all running services

Combinaison de PowerShell Not Equal avec l’opérateur AND

Outre la réalisation d’une comparaison 1:1, vous pouvez combiner la condition Not Equal de PowerShell avec un autre opérateur de comparaison, tel que -eq (égal), en utilisant l’opérateur -and. Cette méthode est utile lorsque l’objet que vous comparez doit répondre à plusieurs conditions.

Par exemple, la surveillance des services de serveur implique généralement de s’assurer que tous les services automatiques doivent être en cours d’exécution. Exécutez la commande ci-dessous pour répertorier tous les services dont l’état n’est pas En cours d'exécution et dont le Type de démarrage est Automatique. Dans cet exemple, la valeur de l’objet doit correspondre à toutes les conditions.

Get-Service | 
Where-Object {$_.Status -ne "Running" -and $_.StartType -eq "Automatic"} |
Select-Object Status,StartType,Name

Maintenant, vous pouvez voir les services automatiques qui ne sont pas en cours d’exécution, ce qui peut vous aider à décider des actions à entreprendre.

PowerShell Not Equal match all conditions

Ajout de la logique conditionnelle If/Else

Vous pouvez également utiliser l’opérateur Not Equal de PowerShell à l’intérieur des instructions conditionnelles, telles que l’instruction if/else.

Par exemple, un service doit être en cours d’exécution dans la plupart des cas si sa valeur de Type de démarrage est Automatique. Le script ci-dessous récupère tous les services, vérifie quels services automatiques ne sont pas en cours d’exécution et exécute les actions correctives — pour afficher un message et démarrer le service.

Remarque : La ligne Start-Service $_.Name est commentée et ne sera pas exécutée. Décommentez cette ligne si vous souhaitez exécuter la commande.

Copiez le code ci-dessous et exécutez-le dans PowerShell.

Get-Service -ErrorAction SilentlyContinue | ForEach-Object {
    if ($_.Status -ne 'Running' -and $_.StartType -eq 'Automatic') {
        "The service [$($_.Name)] StartType is [$($_.StartType)] but its current Status is [$($_.Status)]"
        # Start-Service $_.Name
    }
}

Le résultat vous montre quels services automatiques ne sont pas en cours d’exécution.

Using PowerShell Not Equal in Conditional Logic

Conclusion

Dans cet article, vous avez appris sur l’opérateur Différent de en PowerShell. Vous avez également appris comment l’utiliser avec des exemples. À ce stade, vous devriez avoir une bonne compréhension de son fonctionnement.

Avec cette connaissance nouvellement acquise, vous pouvez maintenant utiliser l’opérateur Différent de dans vos scripts PowerShell pour tester des conditions. Cependant, gardez à l’esprit que d’autres opérateurs de comparaison sont également disponibles. Vous voudrez peut-être combiner plusieurs opérateurs pour tester des conditions plus complexes.

Source:
https://adamtheautomator.com/powershell-not-equal/