Imparare l’operatore Non Uguale di PowerShell con Esempi

Oltre a essere uno strumento a riga di comando, PowerShell è un linguaggio di programmazione sviluppato da Microsoft che ti consente di controllare e automatizzare i tuoi sistemi. PowerShell utilizza una sintassi diversa per i suoi operatori rispetto alla maggior parte dei linguaggi di programmazione.

Tuttavia, una volta compresa la sintassi degli operatori PowerShell, scoprirai che non è difficile da utilizzare. Uno degli operatori più comuni che userai in PowerShell è l’operatore Non Uguale (-ne). Questo operatore ti consente di verificare se due valori non sono uguali tra loro.

In questo articolo, imparerai sull’operatore Non Uguale di PowerShell e come utilizzarlo con esempi.

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri seguirci, assicurati di avere un sistema con PowerShell installato. Questo tutorial utilizza Windows 10 e PowerShell 7.

Utilizzo dell’Operatore Non Uguale di PowerShell (Principi di base)

In sintesi, l’operatore Non Uguale di PowerShell (-ne) determina se il valore di due oggetti non è uguale e restituisce un valore booleano in base al risultato. Se i valori non sono uguali, il risultato è True; altrimenti, il risultato è False.

Ma come e quando si utilizza l’operatore Non Uguale di PowerShell? Le sezioni successive ti insegneranno i concetti di base dell’operatore Non Uguale di PowerShell.

Confronto di Variabili

Uno dei usi più comuni dell’operatore PowerShell “Diverso” è confrontare due variabili. Ad esempio, supponiamo di avere due variabili, $a e $b, e vogliamo vedere se sono uguali. La sintassi del confronto è la seguente:

$a -ne $b

Se i valori di $a e $b non sono uguali, allora questo confronto restituirà True. Altrimenti, restituirà Falso.

1. Esegui i seguenti comandi nella tua console PowerShell per creare le variabili che userai come esempi. Le variabili $a, $b, $c e $d rappresentano valori diversi. Puoi confrontare ciascuno di questi valori per testare se sono uguali o meno.

Assegna a $c e $d lo stesso valore per vedere come funziona l’operatore “Diverso” di PowerShell con valori uguali.

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

2. Ora, effettua il confronto “Diverso” di PowerShell per vedere se i valori di $a e $b non sono uguali.

$a -ne $b

Il risultato restituisce True perché il valore di $a è 1 e $b è 2, che non sono uguali.

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. Ora confronta le variabili $c e $d per vedere se anche esse non sono uguali.

$c -ne $d

Vedrai un output Falso restituito, come mostrato nell’immagine sottostante, poiché i valori di $c e $d sono uguali (3=3).

Comparing variables with equal values

Confronto dei Valori

Quando lavori con PowerShell, non tutti gli oggetti che vuoi confrontare sono in variabili. In questo caso, puoi confrontare direttamente i valori con l’operatore “Diverso” di PowerShell.

Ad esempio, il comando seguente confronta direttamente due valori usando l’operatore “Diverso” di PowerShell.

5 -ne 3

Vedrai restituito un valore True, come mostrato di seguito, poiché i valori non sono uguali.

Comparing different values using the PowerShell not equal operator

D’altra parte, confrontare valori uguali restituirà False.

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

Rimozione di un Valore dall’Array

L’operatore PowerShell Not Equal restituisce un risultato booleano per indicare se due valori non sono uguali. Oltre a questa funzione, l’operatore può anche filtrare elementi da un array.

Ad esempio, crea una variabile chiamata $numbers contenente un array di numeri da 1 a 5.

# Crea un array contenente numeri da 1 a 5.
$numbers = 1..5
# Mostra l'array
$numbers
Storing an array

Successivamente, esegui il comando sottostante per restituire l’array tranne un numero (4).

$numbers -ne 4

E ora puoi vedere che il comando ha restituito ogni numero nell’array tranne il numero 4.

Filtering an array

Confronto di Stringhe

Oltre ai numeri, puoi applicare il confronto PowerShell Not Equal anche alle stringhe.

1. Ad esempio, supponi di avere due stringhe, “Ciao” e “Mondo”. Per determinare se le due stringhe non sono uguali, esegui il comando sottostante.

"Hello" -ne "World"

Il risultato è True poiché “Ciao” non è uguale a “Mondo”.

Comparing unequal stings

2. Ora confronta le stringhe “Ciao” e “ciao” per vedere se sono uguali.

"Hello" -ne "hello"

Vedrai che il risultato è False perché “Ciao” è uguale a “ciao”.

Comparing two strings

3. L’operatore PowerShell Not Equal non è case-sensitive. Come puoi vedere nel passaggio precedente, “Hello” è uguale a “hello”. Ma se hai bisogno di una distinzione tra maiuscole e minuscole quando confronti valori di stringhe, sostituisci l’operatore -ne con l’operatore -cne, che significa Non uguale sensibile alle maiuscole/minuscole.

"Hello" -cne "hello"

Di conseguenza, “Hello” e “hello” non sono più uguali secondo PowerShell.

“Hello” and “hello”

Utilizzo dell’operatore PowerShell Not Equal nel mondo reale (Esempi)

Ora che hai compreso il concetto di base dell’operatore PowerShell Not Equal, le sezioni seguenti ti permetteranno di sperimentare alcuni dei suoi utilizzi nel mondo reale.

Monitoraggio dello stato dei servizi

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

Ad esempio, esegui il cmdlet Get-Service per visualizzare tutti i servizi sulla macchina locale.

Get-Service

Puoi vedere tutti i servizi fermi e in esecuzione nell’output qui sotto.

Display all services

Ora, per filtro solo quei servizi che non sono Running, esegui il comando seguente e applica l’operatore -ne come segue.

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

Come puoi vedere qui sotto, la colonna dello stato mostra solo i servizi fermi dopo l’applicazione del confronto PowerShell Not Equal.

Filtering non-running services

Allo stesso modo, esegui il comando seguente per restituire i servizi il cui Stato non è Stopped.

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

Questa volta, vedrai solo i servizi in esecuzione.

Showing all running services

Combina PowerShell Not Equal con l’operatore AND

Oltre a effettuare un confronto 1:1, è possibile combinare la condizione Not Equal di PowerShell con un altro operatore di confronto, come -eq (uguale), utilizzando l’operatore -and. Questo metodo è utile quando l’oggetto che si sta confrontando deve soddisfare più condizioni.

Ad esempio, il monitoraggio dei servizi del server di solito comporta la verifica che tutti i servizi automatici siano in esecuzione. Esegui il comando di seguito per elencare tutti i servizi il cui Status Non è in esecuzione e il cui StartType è Automatic. In questo esempio, il valore dell’oggetto deve soddisfare tutte le condizioni.

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

Ora puoi vedere i servizi automatici che non sono in esecuzione, il che può aiutarti a decidere quali azioni devi intraprendere.

PowerShell Not Equal match all conditions

Aggiunta della logica condizionale If/Else

Puoi anche utilizzare l’operatore Not Equal di PowerShell all’interno delle istruzioni condizionali, come l’istruzione if/else.

Ad esempio, un servizio deve essere in esecuzione nella maggior parte dei casi se il valore StartType è Automatic. Lo script di seguito ottiene tutti i servizi, verifica quali servizi automatici non sono in esecuzione ed esegue l’azione correttiva – visualizzare un messaggio e avviare il servizio.

Nota: La riga Start-Service $_.Name è commentata e non verrà eseguita. Rimuovi il commento da questa riga se vuoi eseguire il comando.

Copia il codice sottostante ed eseguilo in 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
    }
}

Il risultato ti mostra quali servizi automatici non sono in esecuzione.

Using PowerShell Not Equal in Conditional Logic

Conclusione

In questo articolo hai appreso sull’operatore PowerShell Non Uguale. Hai anche imparato come utilizzarlo con degli esempi. A questo punto, dovresti avere una buona comprensione di come funziona.

Con questa nuova conoscenza, ora puoi utilizzare l’operatore Non Uguale nei tuoi script PowerShell per testare le condizioni. Tuttavia, tieni presente che sono disponibili anche altri operatori di confronto. Potresti voler combinare più operatori per testare condizioni più complesse.

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