Master PowerShell Strings: Concatenazione, Split & More

Le stringhe in PowerShell sono probabilmente il tipo di dato più utilizzato in PowerShell. Dal visualizzare messaggi, sollecitare input, o inviare dati a file, è quasi impossibile scrivere script senza l’interazione di stringhe.

In questo articolo, imparerai che le stringhe non sono solo per la lettura e la visualizzazione. Possono anche essere manipolate per adattarsi allo scopo del compito per cui potresti scrivere lo script. Ad esempio, sostituire caratteri o intere parole, concatenare stringhe per formare una nuova stringa, o addirittura dividere una stringa in più stringhe.

Comprendere le Stringhe

Secondo la definizione .NET di stringa – “Una stringa è una collezione sequenziale di caratteri che viene usata per rappresentare il testo”. In sintesi, finché c’è una sequenza di caratteri che forma un testo, c’è una stringa.

Definire le Stringhe di Sistema in PowerShell

Le stringhe vengono definite racchiudendo una serie di caratteri tra virgolette singole o doppie. Di seguito sono riportati degli esempi di stringa.

PS> 'Hello PowerShell - Today is $(Get-Date)'PS> "Hello PowerShell - Today is $(Get-Date)"

Le stringhe sono in realtà System.Strings in .NET.

Come puoi vedere dall’esempio sopra, la prima stringa è racchiusa da una virgoletta singola, e la seconda stringa è racchiusa da una doppia virgoletta. Se te lo stai chiedendo, l’unica differenza tra le due è che le stringhe tra virgolette doppie supportano l’espansione della stringa, mentre una virgoletta singola rappresenterà solo stringhe letterali.

Per confermare il concetto di virgoletta singola vs. doppia, quando incollerai entrambe le stringhe dall’esempio sopra in PowerShell.

Lo screenshot qui sotto mostra che una stringa tra virgolette singole restituisce esattamente la stringa letterale definita. Mentre la stringa tra virgolette doppie restituisce la stringa con il risultato dell’espressione del cmdlet Get-Date.

Single Quote vs. Double-Quote String Output

Il risultato mostrato sopra dimostra la distinzione di quando è appropriato utilizzare virgolette singole o doppie nella definizione delle stringhe.

L’oggetto stringa

Come indicato nella sezione precedente, la collezione di caratteri che forma un testo è una stringa. Il valore risultante della stringa è l’oggetto String. L’oggetto String è un oggetto .NET che appartiene al tipo [System.String].

E poiché System.String è un oggetto, ha delle proprietà a cui è possibile accedere utilizzando il cmdlet Get-Member. Di seguito inseriamo una variabile all’interno di una stringa tra virgolette doppie.

PS> "Hello PowerShell - Today is $(Get-Date)" | Get-Member=

Lo screenshot qui sotto mostra il TypeName e l’elenco parziale delle proprietà dell’oggetto String.

String Object properties

Concatenazione delle stringhe in PowerShell

La concatenazione delle stringhe viene descritta come l’unione di due o più stringhe, creando essenzialmente un oggetto stringa da più oggetti stringa separati. Ci sono diversi metodi in PowerShell per concatenare le stringhe. Ogni metodo è diverso e quale utilizzare dipende da come si intende implementare la concatenazione delle stringhe.

A typical example of using string concatenation in the real world is Active Directory user creation. Perhaps you’re creating a user creation script that takes the first name, last name, and department values from a list.

Utilizzando la concatenazione di stringhe, è possibile formulare la convenzione standard di denominazione per il nome, il nome visualizzato, il nome utente e l’indirizzo email. Per questo esempio, lavorerai con le seguenti stringhe mostrate di seguito. Copia il codice qui sotto e incollalo nella tua sessione di PowerShell.

$domain = 'contoso.com'
$firstname = 'Jack'
$lastname = 'Ripper'
$department = 'Health'

Utilizzando i valori variabili di esempio sopra, l’obiettivo è ottenere i seguenti valori elencati di seguito concatenando le stringhe insieme.

  • Nome = nome cognome
  • Nome visualizzato = nome cognome (reparto)
  • SamAccountName = nome.cognome
  • Indirizzo email = [email protected]

Nelle sezioni successive, i valori elencati sopra verranno creati utilizzando i diversi metodi di concatenazione di stringhe disponibili in PowerShell.

Cominciamo!

Utilizzando l’operatore di concatenazione di stringhe di PowerShell

I linguaggi di programmazione hanno il proprio operatore di concatenazione di stringhe utilizzato per concatenare le stringhe. Ad esempio, in Visual Basic, il metodo di concatenazione è il segno ampersand (&). PowerShell ha anche il suo metodo di concatenazione, che è il segno più (+).

Utilizzando l’operatore di concatenazione di stringhe, è possibile concatenare le stringhe utilizzando il codice di seguito.

## Nome
$firstname + ' ' + $lastname
## Nome visualizzato
$firstname + ' ' + $lastname + ' (' + $department + ')'
## SamAccountName
$firstname + '.' + $lastname
## Indirizzo email
$firstname + '.' + $lastname + '@' + $domain

Utilizzando l’espansione delle stringhe di PowerShell

l’uso dell’espansione delle stringhe potrebbe essere il metodo che comporta il codice più breve quando si concatenano le stringhe. Come si può vedere dal codice sottostante, tutto ciò che è necessario è organizzare le stringhe come dovrebbero apparire e racchiuderle tra virgolette doppie.

# Utilizzando l'espansione delle stringhe
## Nome
"$firstname $lastname"
## Nome visualizzato
"$firstname $lastname ($department)"
## Nome account Sam
"$firstname.$lastname"
## Indirizzo email
"$firstname.$lastname@$domain"

In seguito, PowerShell interpreta e gestisce l’espansione delle stringhe all’interno della stringa tra virgolette doppie per produrre come risultato la stringa concatenata. È possibile fare riferimento all’output di esempio di seguito riportato.

Using String Expansion

Utilizzando l’operatore di formattazione di PowerShell

l’operatore di formattazione (-f) viene utilizzato principalmente per la formattazione composita. È importante ricordare che con questo metodo ci sono tre parti nell’uso di -f.

Fare riferimento alla terza riga di codice di seguito riportata. Il "{0} {1}" rappresenta il formato e i segnaposto. I numeri tra parentesi graffe indicano l’indice della stringa nella raccolta da visualizzare al suo posto. Le virgolette possono essere singole o doppie.

La raccolta di stringhe in input in questo esempio è rappresentata da $nome,$cognome. Ciò significa che l’indice della variabile $nome è 0, mentre quello di $cognome è 1.

Infine, -f è il posto tra il segnaposto e la collezione di stringhe rappresentata da (-f).

## Nome
"{0} {1}" -f $firstname,$lastname
## Nome visualizzato
"{0} {1} ({2})" -f $firstname,$lastname,$department
## SamAccountName
"{0}.{1}" -f $firstname,$lastname
## Indirizzo email
"{0}.{1}@{2}" -f $firstname,$lastname,$domain

Il codice sopra produrrà i risultati mostrati di seguito.

Using the Format Operator

Utilizzando l’operatore -Join di PowerShell

L’operatore -Join può essere utilizzato per unire le stringhe in una singola stringa in due modi.

Il primo modo per utilizzare -Join è quello di seguirlo con l’array di stringhe che si desidera concatenare. L’operatore -Join non fornisce un’opzione per aggiungere un delimitatore. Tutte le stringhe nell’array saranno unite insieme senza nulla tra di loro.

-Join <String[]>

Il secondo modo per utilizzare l’operatore -Join consiste nel specificare il delimitatore da utilizzare. L’array di stringhe verrà unito, ma il carattere del delimitatore specificato verrà inserito tra ogni stringa.

<String[]> -Join <Delimiter>

Tornando all’obiettivo di concatenare le stringhe, il codice di seguito illustra come utilizzare l’operatore -Join per unire le stringhe.

## Nome
$firstname, $lastname -join ' '
## Nome visualizzato
$firstname,$lastname,"($department)" -join ' '
## SamAccountName
-join ($firstname,'.',$lastname)
## Indirizzo email
-join ($firstname,'.',$lastname,'@',$domain)

Quando si esegue il codice di esempio sopra in PowerShell, ci si aspetta di vedere un output simile a quello mostrato di seguito.

Using the PowerShell Join Operator

Il metodo String.Format() di .NET

Il metodo String.Format di .NET è l’equivalente di .NET dell’operatore di formattazione di PowerShell. Funziona allo stesso modo dell’operatore di formattazione, in cui è necessario specificare il formato e i segnaposto.

## Nome
[string]::Format("{0} {1}",$firstname,$lastname)
## NomeVisualizzato
[string]::Format("{0} {1} ({2})",$firstname,$lastname,$department)
## SamAccountName
[string]::Format("{0}.{1}",$firstname,$lastname)
## IndirizzoEmail
[string]::Format("{0}.{1}@{2}",$firstname,$lastname,$domain)

La schermata sottostante mostra il metodo String.Format in azione.

The .NET String.Format Method

Il metodo String.Concat() di .NET

Un altro metodo per concatenare le stringhe è utilizzare il metodo String.Concat di .Net. Il metodo String.Concat di .NET è l’equivalente di .NET dell’operatore di concatenazione di stringhe di PowerShell (+). Tuttavia, anziché utilizzare il segno + per unire le stringhe, è possibile aggiungere tutte le stringhe all’interno del metodo in questo modo – [string]::Concat(stringa1, stringa2...).

## Nome
[string]::Concat($firstname,' ',$lastname)
## Nome visualizzato
[string]::Concat($firstname,' ',$lastname,' (',$department,')')
## Nome SamAccount
[string]::Concat($firstname,'.',$lastname)
## Indirizzo email
[string]::Concat($firstname,'.',$lastname,'@',$domain)

La schermata sottostante mostra il risultato dell’invocazione del metodo .NET String.Concat. È possibile vedere che PowerShell ha unito stringa1, stringa2.

Using the .NET String.Concat Method

Il metodo .NET String.Join()

Il metodo .NET String.Join è l’equivalente del metodo PowerShell Join Operator (-join) in .NET. Il formato per questo metodo è [string]::Join(<delimitatore>,<stringa1>,<stringa2>,...).

Il primo elemento all’interno del metodo -Join è sempre il delimitatore. Successivamente, i valori degli elementi successivi sono le stringhe che si desidera concatenare. Ecco un esempio di codice. Ricorda, il primo elemento è sempre il delimitatore. Se non si desidera aggiungere un delimitatore, è possibile specificarlo in questo modo —> ''.

## Nome
[string]::Join(' ',$firstname,$lastname)
## Nome visualizzato
[string]::Join(' ',$firstname,$lastname,"($department)")
## Nome SamAccount
[string]::Join('',$firstname,'.',$lastname)
## Indirizzo email
[string]::Join('',$firstname,'.',$lastname,'@',$domain)
The .NET String.Join Method

Suddivisione delle stringhe in PowerShell

Hai visto diversi metodi per concatenare stringhe nella sezione precedente. In questa sezione, imparerai i diversi modi in cui utilizzare PowerShell per suddividere le stringhe. La suddivisione delle stringhe è l’azione inversa della concatenazione.

È possibile dividere le stringhe in PowerShell in due modi diversi: utilizzando la funzione/metodo split() o l’operatore split.

Dividere le stringhe con il metodo Split()

Se stai cercando un modo semplice per dividere una stringa e creare un array, puoi utilizzare il metodo split(). Il metodo split() è presente su ogni oggetto stringa e può dividere una stringa in un array in base a un carattere non-regex.

Ad esempio, se hai una stringa come green|eggs|and|ham e desideri creare un array come @('green','eggs','and','ham'), puoi dividere questa stringa utilizzando il simbolo di pipe (|) come mostrato nel seguente frammento di codice.

$string = 'green|eggs|and|ham'
$string.split('|')

Vedrai quindi che PowerShell ha suddiviso la stringa nell’array desiderato utilizzando il simbolo di pipe.

Il metodo split() è un modo semplice per dividere le stringhe, ma ha alcune limitazioni. Il metodo split() non consente di suddividere le stringhe utilizzando le espressioni regolari. Se hai bisogno di funzionalità più avanzate per suddividere una stringa, dovrai imparare a utilizzare l’operatore split.

L’operatore -split

L’operatore principale utilizzato per dividere le stringhe in PowerShell è l’operatore -Split. Utilizzando l’operatore -Split, le stringhe vengono suddivise per impostazione predefinita in base agli spazi bianchi o con specifici caratteri delimitatori.

Ecco la sintassi dell’operatore -Split per il tuo riferimento. Ricorda di notare la differenza tra lo split unario e binario.

# Split unario
-Split <String>
-Split (<String[]>)

# Split binario
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]

In questo esempio, la variabile $string contiene il valore di una stringa su una sola riga. Successivamente, con l’operatore -Split, la stringa su una sola riga verrà divisa in un array di stringhe di PowerShell. La stringa divisa risultante viene salvata nella variabile $split.

## Divisione delle stringhe in sottostringhe
# Assegna un valore di stringa alla variabile $string
$string = 'This sentence will be split between whitespaces'
# Divide il valore di $string e memorizza il risultato nella variabile $split
$split = -split $string
# Ottieni il conteggio delle sottostringhe risultanti
$split.Count
# Mostra le sottostringhe risultanti
$split

Come puoi vedere dal risultato sopra, ciò che era originariamente una singola stringa è stata divisa in 7 sottostringhe. Questo dimostra come PowerShell divida una stringa in un array.

Il delimitatore di caratteri

Nell’esempio precedente, l’operatore -Split ha diviso l’oggetto stringa singola in più sottostringhe anche senza specificare un delimitatore; questo perché il delimitatore predefinito dell’operatore -Split è lo spazio bianco. Tuttavia, i delimitatori possono essere anche caratteri, stringhe, pattern o blocchi di script.

In questo esempio, il delimitatore utilizzato è il punto e virgola ;.

## Dividere le stringhe in sottostringhe con delimitatore
# Assegna un valore di stringa alla variabile $string
$string = 'This;sentence;will;be;split;between;semicolons'
# Dividi il valore di $string e salva il risultato nella variabile $split
$split = $string -split ";"
# Ottieni il conteggio delle sottostringhe risultanti
$split.Count
# Mostra le sottostringhe risultanti
$split

Quando testi il codice sopra in PowerShell, otterrai il seguente risultato.

Splitting a String into Substrings with Character Delimiter

Noto dal risultato sopra che il carattere del delimitatore è stato omesso completamente dalle sottostringhe risultanti.

Se, per qualche motivo, hai bisogno di mantenere il carattere del delimitatore, il delimitatore può essere mantenuto racchiudendo il carattere tra parentesi.

$split = $string -split "(;)"
$split.Count
$split

Dopo aver modificato il delimitatore di divisione, come mostrato sopra, l’esecuzione produrrà l’output mostrato di seguito.

Splitting a string on semicolon

Il risultato sopra mostra che i caratteri del delimitatore non sono omessi e sono conteggiati nelle sottostringhe risultanti.

Il Delimitatore della Stringa

Le stringhe possono anche essere divise da un’altra stringa come delimitatore. In questo esempio, la stringa “giorno” viene utilizzata come delimitatore.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split "day"

Il Delimitatore del Blocco di Script

A scriptBlock as the delimiter enables the -Split operator to perform custom or complex splitting of strings.

Negli esempi precedenti, il carattere o la stringa del delimitatore vengono utilizzati per dividere le stringhe. Con l’uso di un blocco di script, puoi creare un’espressione che utilizza efficacemente più di un delimitatore.

L’esempio seguente utilizza l’espressione {$PSItem -eq 'e' -or $PSItem -eq 'y'}, il che significa che la stringa verrà divisa se il carattere in ingresso è 'e' o 'a'.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split {$PSItem -eq 'e' -or $PSItem -eq 'y'}

E quando si esegue questo comando, l’output sarà costituito da sottostringhe divise utilizzando i caratteri delimitatori specificati nell’espressione nel blocco di script.

Splitting a String into Substrings with a Script Block Delimiter

Questo prossimo esempio fa qualcosa in più con un blocco di script. Questa volta, l’espressione valuta se:

  • Il carattere in ingresso passa come un intero; e
  • Che il suo valore sia superiore a 1

Se il risultato della valutazione è vero, quindi l’operatore -Split utilizzerà quel carattere come delimitatore. Inoltre, è stata aggiunta la gestione degli errori per assicurarsi che gli errori vengano filtrati.

$daysOfTheWeek= 'monday1tuesday2wednesday3thursday1friday4saturday8sunday'
$daysOfTheWeek -split {
    try {
        [int]$PSItem -gt 1
    }
    catch {
        #NON FA NULLA
    }
}

Dopo aver eseguito il codice mostrato sopra, l’aspettativa è che la stringa venga divisa nel punto in cui il valore del carattere può essere convertito in un intero con un valore superiore a 1. Di seguito viene mostrato l’output atteso.

Splitting a String into Substrings with a Script Block Delimiter

Il Delimitatore RegEx

Per impostazione predefinita, l’operatore -Split utilizza la corrispondenza RegEx del delimitatore specificato. Ciò significa che è possibile utilizzare anche RegEx come delimitatori per dividere le stringhe.

In questo prossimo esempio, la stringa contiene caratteri di parola e caratteri non di parola. L’obiettivo è dividere la stringa con qualsiasi carattere non di parola. In RegEx, i caratteri non di parola sono rappresentati da \W, mentre i caratteri di parola che corrispondono a questi caratteri – [a-zA-Z0-9_] – sono rappresentati da \w.

$daysOfTheWeek= 'monday=tuesday*wednesday^thursday#friday!saturday(sunday'
$daysOfTheWeek -split "\W"

Limitare le sottostringhe

È anche possibile impedire all’operatore -Split di dividere una stringa in un certo numero di sottostringhe. L’opzione che può essere utilizzata per limitare il risultato delle sottostringhe è il parametro <Max-sottostringhe>.

Quando ti riferisci alla sintassi di -Split, il parametro <Max-sottostringhe> è il parametro che segue direttamente il parametro <Delimited>. La sintassi viene mostrata di seguito per riferimento.

<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]

Seguendo la sintassi sopra, il codice di esempio di seguito è modificato per limitare il numero di divisioni/sottostringhe a 3.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split ",",3

E, eseguendo il codice di cui sopra, si ottiene l’output seguente. Come puoi vedere dall’output qui sotto, la stringa è stata divisa solo in tre sottostringhe. I delimitatori rimanenti sono stati saltati.

Limiting the Number of Substrings starting from the first 3 matched delimiters

Ora, se vuoi limitare le sottostringhe, ma in ordine inverso, puoi cambiare il valore del parametro <Max-sottostringhe> in un valore negativo. In questo prossimo esempio, <Max-sottostringhe> viene modificato in -3.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split ",",-3

E come risultato del codice modificato sopra, la stringa è stata divisa a partire dagli ultimi tre delimitatori corrispondenti.

Limiting the Number of Substrings starting from the last 3 matched delimiters

Trovare e sostituire stringhe

In questa sezione, imparerai i due metodi che possono essere utilizzati per cercare e eseguire una sostituzione di stringa in PowerShell. Il metodo Replace() e l’operatore -Replace.

Il metodo Replace()

L’oggetto stringa ha anche un metodo incorporato che può aiutare a eseguire operazioni di ricerca e sostituzione: il metodo replace(). Il metodo replace() accetta un massimo di quattro sovraccarichi.

Di seguito sono elencati gli insiemi accettabili di sovraccarichi per il metodo replace().

<String>.Replace(<original>, <substitute>[, <ignoreCase>][, <culture>])

Gli unici sovraccarichi richiesti sono <originale> e <sostituto>. <ignoraMaiuscMinusc> e <cultura> sono opzionali.

Nell’esempio qui sotto, il codice cercherà tutte le istanze del carattere virgola (,) e le sostituirà con un punto e virgola (;).

$daysOfTheWeek = 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek.Replace(',',';')

Oltre a sostituire solo un singolo carattere, puoi utilizzare anche il metodo replace() per cercare e sostituire stringhe. Il codice di esempio qui sotto sostituisce la parola “giorno” con “notte”.

$daysOfTheWeek = 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek.Replace('day','NIGHT')
Replacing a matched string using the replace() method

L’operatore -Replace

La sintassi per l’operatore replace è mostrata qui sotto.

<string> -replace <original>, <substitute>

Utilizzando la sintassi sopra, il codice di esempio qui sotto sostituisce la parola “giorno” con “Notte” utilizzando l’operatore -replace.

$daysOfTheWeek = 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -replace 'day','NIGHT'
Replacing a matched character with the -replace operator

Questo prossimo esempio utilizza una corrispondenza RegEx per sostituire le stringhe con l’operatore -replace. Il codice qui sotto cerca la stringa che corrisponde a (#.) all’interno della stringa qui e le sostituisce con nulla.

$daysOfTheWeek = @'
1. Line 1
2. Line 2
3. Line 3
4. Line 4
5. Line 5
'@
$daysOfTheWeek -replace "\d.\s",""
Replacing a RegEx match using -replace

Estrazione di stringhe da altre stringhe

L’oggetto stringa ha un metodo chiamato SubString(). Il metodo SubString() viene utilizzato per estrarre stringhe all’interno di altre stringhe in posizioni specifiche. La sintassi del metodo SubString() è mostrata di seguito.

<String>.SubString(<startIndex>[,<length>])

L’argomento startIndex indica l’indice di posizione da cui il metodo SubString() inizia la ricerca. Il parametro length indica il numero di caratteri da restituire a partire dall’argomento startIndex. Il parametro length è opzionale e, se non viene utilizzato, il metodo SubString() restituirà tutti i caratteri.

Estrazione di una sottostringa da una posizione di partenza e una lunghezza fissa

Nell’esempio di codice qui sotto viene recuperata la parte della stringa $guid a partire dall’indice 9 e vengono restituiti esattamente i 5 caratteri successivi.

$guid = 'e957d74d-fa16-44bc-9d72-4bea54952d8a'
$guid.SubString(9,5)

Estrazione di una sottostringa da una posizione di partenza dinamica

Questo prossimo esempio mostra come utilizzare la proprietà della lunghezza della stringa PowerShell per definire dinamicamente un indice di inizio.

Il codice qui sotto esegue le seguenti operazioni:

  • Ottiene la lunghezza dell’oggetto stringa.
  • Ottiene l’indice dell’indice centrale dividendo la lunghezza per 2.
  • Utilizza l’indice centrale come indice di partenza della sottostringa.
$guid = 'e957d74d-fa16-44bc-9d72-4bea54952d8a'
$guid.SubString([int]($guid.Length/2))

Dato che il valore length non è stato specificato, il metodo Substring() restituisce tutti i caratteri a partire dall’indice di partenza.

Extracting a Substring from a Dynamic Starting Position

Confronto di stringhe in PowerShell

Puoi utilizzare PowerShell per confrontare anche le stringhe utilizzando i metodi integrati dell’oggetto stringa come CompareTo(), Equals() e Contains(). Oppure, utilizzando gli operatori di confronto di PowerShell.

Utilizzando il metodo CompareTo()

Il metodo CompareTo() restituisce un valore di 0 se le due stringhe hanno lo stesso valore. Ad esempio, il codice seguente confronta due oggetti stringa.

$string1 = "This is a string"
$string2 = "This is a string"
$string1.CompareTo($string2)

E dato che i valori sono gli stessi, il risultato dovrebbe essere 0, come mostrato di seguito.

Using CompareTo() method to compare strings

Utilizzando il metodo Equals() e l’operatore -eq

Il metodo Equals() e l’operatore -eq possono essere utilizzati per verificare se il valore delle due stringhe è uguale.

L’esempio seguente utilizza il metodo Equals() per confrontare i valori di $string1 e $string2.

$string1 = "This is a string"
$string2 = "This is not the same string"
$string1.Equals($string2)

Il codice sopra dovrebbe restituire False perché i valori di $string1 e $string2 non sono uguali tra loro.

Comparing strings with the Equals() method

Nell’esempio di codice successivo viene utilizzato -eq al posto di Equals() per confrontare i valori di $string1 e $string2.

$string1 = "This is a string"
$string2 = "This is not the same string"
$string1 -eq $string2

Come puoi vedere dall’output sottostante, il risultato quando si utilizza l’operatore -eq e il metodo Equal() sono gli stessi.

Comparing strings with the -eq operator

Utilizzando il metodo Contains()

In questo esempio, le due stringhe vengono confrontate verificando se la stringa di PowerShell contiene una sottostringa di un’altra stringa.

Il codice sottostante mostra che i valori di $string1 e $string2 non sono uguali. Tuttavia, il valore di $string2 è una sottostringa di $string1.

$string1 = "This is a string 1"
$string2 = "This is a string"
$string1.Contains($string2)

Il risultato del codice precedente dovrebbe essere True, come mostrato di seguito.

Comparing strings using the Contains() method

Ulteriori letture

Source:
https://adamtheautomator.com/powershell-strings/