Sei sulla pagina 1di 14

ARGOMENTO

about_assignment_operators

DESCRIZIONE BREVE
Descrive come utilizzare gli operatori per assegnare valori alle
variabili.

DESCRIZIONE DETTAGLIATA
Gli operatori di assegnazione assegnano uno o più valori a una
variabile. Consentono di eseguire operazioni numeriche sui valori
prima dell'assegnazione.

In Windows PowerShell sono supportati gli operatori di


assegnazione seguenti.

Operatore Descrizione
------- -----------
= Imposta il valore di una variabile sul valore specificato.

+= Aumenta il valore di una variabile per il valore


specificato o aggiunge il valore specificato a quello esistente.

-= Diminuisce il valore di una variabile del valore


specificato.

*= Moltiplica il valore di una variabile per il valore


specificato o aggiunge il valore specificato a quello esistente.

/= Divide il valore di una variabile per il valore specificato.

%= Divide il valore di una variabile per il valore specificato,


quindi assegna il resto alla variabile.

++ Aumenta di 1 il valore di una variabile, una proprietà


assegnabile o un elemento di matrice.

-- Diminuisce di 1 il valore di una variabile, una proprietà


assegnabile o un elemento di matrice.

SINTASSI
La sintassi degli operatori di assegnazione è la seguente:

<espressione-assegnabile> <operatore di assegnazione> <valore>

Le espressioni assegnabili includono variabili e proprietà. Il


valore può essere un valore singolo, una matrice di valori o un
comando, un'espressione o un'istruzione.

Gli operatori di incremento e di decremento sono operatori unari.


Ciascuno dispone di versioni con prefisso e con suffisso.
<espressione-assegnabile><operatore>
<operatore><espressione-assegnabile>

L'espressione assegnabile deve essere un numero o un elemento


convertibile in un numero.

ASSEGNAZIONE DI VALORI
Le variabili sono spazi di memoria denominati in cui vengono
archiviati valori. I valori vengono archiviati nelle variabili tramite
l'operatore di assegnazione (=).Il nuovo valore può sostituire il valore
esistente della variabile oppure è possibile aggiungere un nuovo
valore a quello esistente.

L'operatore di assegnazione di base è il segno di uguale (=)


(ASCII 61). Ad esempio, l'istruzione seguente assegna il valore
Windows PowerShell alla variabile $MyShell:

$MyShell = "Windows PowerShell"

Quando si assegna un valore a una variabile in Windows PowerShell, la


variabile viene creata se non è già esistente. Ad esempio, con la
prima delle due istruzioni di assegnazione seguenti viene creata la
variabile $a alla quale viene assegnato un valore di 6. Con la seconda
istruzione di assegnazione viene assegnato un valore di 12 alla
variabile $a. La prima istruzione crea una nuova variabile. La seconda
ne modifica solo il valore:

$a = 6
$a = 12

Le variabili in Windows PowerShell non dispongono di un tipo di dati


specifico a meno che non se ne esegua il cast. Quando una variabile
contiene solo un oggetto, accetta il tipo di dati di tale oggetto.
Quando una variabile contiene una raccolta di oggetti, il tipo di
dati della variabile è System.Object. Pertanto, è possibile assegnare
qualsiasi tipo di oggetto alla raccolta. Nell'esempio seguente viene
illustrato che è possibile aggiungere oggetti processo, oggetti servizio,
stringhe e valori interi a una variabile senza generare un errore:

$a = get-process
$a += get-service
$a += "stringa"
$a += 12

Poiché l'operatore di assegnazione (=) dispone di una precedenza


inferiore rispetto all'operatore pipeline (|), le parentesi non sono
necessarie per assegnare a una variabile il risultato di una pipeline dei
comandi. Ad esempio, nel comando seguente vengono ordinati i servizi del
computer, che vengono quindi assegnati alla variabile $a:
$a = get-service | sort name

È inoltre possibile assegnare a una variabile il valore creato da


un'istruzione, come nell'esempio seguente:

$a = if ($b -lt 0) { 0 } else { $b }

In questo esempio viene assegnato 0 alla variabile $a se il


valore di $b è minore di 0. Se tale valore non è minore di zero, viene
assegnato a $a.

OPERATORE DI ASSEGNAZIONE (=)


L'operatore di assegnazione (=) assegna valori alle variabili. Se la
variabile ha già un valore, l'operatore di assegnazione (=) sostituisce il
valore senza alcun avviso.

Nell'istruzione seguente il valore intero 6 viene assegnato alla


variabile $a:

$a = 6

Per assegnare a una variabile un valore stringa, racchiuderlo tra


virgolette nel modo seguente:

$a = "baseball"

Per assegnare una matrice (più valori) a una variabile, separare


i valori con le virgole nel modo seguente:

$a = "mela", "arancia", "limone", "uva"

Per assegnare una tabella hash a una variabile, utilizzare la


notazione della tabella hash standard in Windows PowerShell.
Digitare una chiocciola (@) seguita da coppie chiave/valore
separate da punto e virgola (;) e racchiusi tra parentesi graffe
({ }). Ad esempio, per assegnare una tabella hash alla variabile $a,
digitare:

$a = @{uno=1; due=2; tre=3}

Per assegnare valori esadecimali a una variabile, anteporre "0x"


al valore. In Windows PowerShell il valore esadecimale (0x10) viene
convertito in valore decimale (in questo caso 16) e tale valore viene
assegnato alla variabile $a. Ad esempio, per assegnare il valore
0x10 alla variabile $a, digitare:
$a = 0x10

Per assegnare un valore esponenziale a una variabile, digitare il


numero radice, la lettera "e" e un numero che rappresenta un
multiplo di 10. Ad esempio, per assegnare il valore 3,1415
elevato a 1.000 alla variabile $a, digitare:

$a = 3,1415e3

In Windows PowerShell è inoltre possibile convertire kilobyte


(KB), megabyte (MB) e gigabyte (GB) in byte. Ad esempio, per
assegnare un valore di 10 kilobyte alla variabile $a, digitare:

$a = 10kb

ASSEGNAZIONE MEDIANTE OPERATORE DI ADDIZIONE (+=).


L'assegnazione mediante operatore di addizione (+=) aumenta il
valore di una variabile o aggiunge il valore specificato al
valore esistente. L'azione varia a seconda che la variabile sia
di tipo numerico o stringa e contenga un solo valore (scalare) o
più valori (raccolta).

L'operatore += combina due operazioni. Innanzitutto aggiunge un


valore, quindi lo assegna. Pertanto, le istruzioni seguenti sono
equivalenti:

$a += 2
$a = ($a + 2)

Quando la variabile contiene un solo valore numerico, l'operatore


+= aumenta il valore esistente del valore specificato a destra
dell'operatore. Quindi, l'operatore assegna il valore risultante alla
variabile.
Nell'esempio seguente viene illustrato come utilizzare
l'operatore += per aumentare il valore di una variabile:

C:\PS> $a = 4
C:\PS> $a += 2
C:\PS> $a
6

Quando il valore della variabile è una stringa, il valore a destra


dell'operatore viene aggiunto alla stringa, nel modo seguente:

C:\PS> $a = "Windows"
C:\PS> $a +- " PowerShell"
C:\PS> $a
Windows PowerShell

Quando il valore della variabile è una matrice, i valori a destra


dell'operatore += vengono aggiunti alla matrice. A meno che la
matrice non venga digitata in modo esplicito mediante cast, è possibile
aggiungere a essa qualsiasi tipo di valore, nel modo seguente:

C:\PS> $a = 1,2,3
C:\PS> $a += 2
C:\PS> $a
1
2
3
2
C:\PS> $a += "Stringa"
C:\PS> $a
1
2
3
2
String

Quando il valore di una variabile è una tabella hash, il valore a


destra dell'operatore += viene aggiunto alla tabella hash.
Tuttavia, poiché l'unico tipo che è possibile aggiungere a una
tabella hash è un'altra tabella hash, ogni altra assegnazione ha esito
negativo.

Ad esempio, con il comando seguente viene assegnata una tabella


hash alla variabile $a:
Quindi, l'operatore + = viene utilizzato per aggiungere un'altra
tabella hash alla tabella hash esistente, aggiungendo in effetti
una nuova coppia chiave/valore alla tabella hash esistente.
Questo comando ha esito positivo, come illustrato nell'output:

C:\PS> $a = @{a = 1; b = 2; c = 3}
C:\PS> $a += @{mode = "write"}
C:\PS> $a
Name Value
---- -----
a 1
b 2
mode write
c 3

Mediante il comando seguente si tenta di aggiungere un valore


intero (1) alla tabella hash nella variabile $a. Questo comando
ha esito negativo:

C:\PS> $a = @{a = 1; b = 2; c = 3}
C:\PS> $a += 1
È possibile aggiungere un'altra tabella hash solo a una
tabella hash.
At line:1 char:6
+ $a += <<<< 1

ASSEGNAZIONE MEDIANTE OPERATORE DI SOTTRAZIONE (-=)


L'assegnazione mediante operatore di sottrazione (-=) diminuisce
il valore di una variabile del valore specificato a destra
dell'operatore.
Questo operatore non può essere utilizzato con le variabili di
stringa, né per rimuovere un elemento da una raccolta.

L'operatore -= combina due operazioni. Innanzitutto sottrae un valore,


quindi assegna il valore risultante. Pertanto, le istruzioni seguenti
sono equivalenti:

$a -= 2
$a = ($a - 2)

Nell'esempio seguente viene illustrato come utilizzare


l'operatore -= per diminuire il valore di una variabile:

C:\PS> $a = 8
C:\PS> $a -= 2
C:\PS> $a
6

È inoltre possibile utilizzare l'operatore di assegnazione -= per


diminuire il valore di un membro di una matrice numerica. A tale
scopo, specificare l'indice dell'elemento della matrice che si
desidera modificare. Nell'esempio seguente, il valore del terzo
elemento di una matrice (elemento 2) viene diminuito di 1:

C:\PS> $a = 1,2,3
C:\PS> $a[2] -= 1.
C:\PS> $a
1
2
2

Non è possibile utilizzare l'operatore -= per eliminare i valori


di una variabile. Per eliminare tutti i valori assegnati a una
variabile, utilizzare il cmdlet Clear-Item o Clear-Variable per
assegnare un valore $null o "" alla variabile.

$a = $null

Per eliminare un determinato valore da una matrice, utilizzare la


notazione di matrice per assegnare un valore $null a tale elemento. Ad
esempio, mediante l'istruzione seguente viene eliminato il secondo valore
(posizione di indice 1) da una matrice:

C:\PS> $a = 1,2,3
C:\PS> $a
1
2
3

C:\PS> $a[1] = $null


C:\PS> $a
1
3

Per eliminare una variabile, utilizzare il cmdlet Remove-Variable.


Questo metodo è utile quando viene eseguito il cast esplicito della
variabile a un determinato tipo di dati e si desidera una variabile non
tipizzata. Nel comando seguente viene eliminata la variabile $a:

remove-variable a

ASSEGNAZIONE MEDIANTE OPERATORE DI MOLTIPLICAZIONE (*=) L'assegnazione


mediante operatore di moltiplicazione (*=) moltiplica un valore numerico o
aggiunge il numero specificato di copie del valore di stringa di una
variabile.

Quando una variabile contiene un solo valore numerico, tale


valore viene moltiplicato per il valore a destra dell'operatore.
Nell'esempio seguente viene illustrato come utilizzare l'operatore *= per
moltiplicare il valore di una variabile:

C:\PS> $a = 3
C:\PS> $a *= 4
C:\PS> $a
12

In questo caso, l'operatore *= combina due operazioni. Innanzitutto


moltiplica per un valore, quindi assegna il valore risultante.
Pertanto, le istruzioni seguenti sono equivalenti:

$a *= 2
$a = ($a * 2)

Quando una variabile contiene un valore di stringa, il numero


specificato di stringhe viene aggiunto al valore, nel modo seguente:

C:\PS> $a = "file"
C:\PS> $a *= 4
C:\PS> $a
filefilefilefile

Per moltiplicare un elemento di una matrice, utilizzare un indice per


identificare l'elemento che si desidera moltiplicare. Mediante il comando
seguente, ad esempio, il primo elemento della matrice, nella
posizione di indice 0, viene moltiplicato per 2:

$a[0] *= 2

ASSEGNAZIONE MEDIANTE OPERATORE DI DIVISIONE (/=).


L'assegnazione mediante operatore di divisione (/=) divide un valore
numerico per il valore specificato a destra dell'operatore. Non è
possibile utilizzare questo operatore con variabili stringa.

L'operatore /= combina due operazioni. Innanzitutto divide un


valore, quindi assegna il valore risultante. Pertanto, le due
istruzioni seguenti sono equivalenti:

$a /= 2
$a = ($a / 2)

Ad esempio, nel comando seguente viene utilizzato l'operatore /= per


dividere il valore di una variabile:

C:\PS> $a = 8
C:\PS> $a /=2
C:\PS> $a
4

Per dividere un elemento di una matrice, utilizzare un indice per


identificare l'elemento che si desidera modificare. Tramite il
comando seguente, ad esempio, il secondo elemento della matrice,
nella posizione di indice 1, viene diviso per 2:

$a[1] /= 2

ASSEGNAZIONE MEDIANTE OPERATORE MODULO (/=).


L'assegnazione mediante operatore modulo (%=) divide il valore di una
variabile per il valore a destra dell'operatore. Quindi, l'operatore
%= assegna il resto alla variabile. È possibile utilizzare questo
operatore solo quando una variabile contiene un solo valore numerico.
Non è possibile utilizzarlo quando una variabile contiene una
variabile di stringa o una matrice.

L'operatore %= combina due operazioni. Innanzitutto, divide un


valore e calcola il resto, quindi assegna il resto alla
variabile. Pertanto, le istruzioni seguenti sono equivalenti:
$a %= 2
$a = ($a % 2)

Nell'esempio seguente viene illustrato come utilizzare


l'operatore %= per salvare il resto di un quoziente:

C:\PS> $a = 7
C:\PS> $a %= 4
C:\PS> $a
3

OPERATORI DI INCREMENTO E DECREMENTO

L'operatore di incremento (++) aumenta il valore di una variabile


di 1. Quando si utilizza l'operatore di incremento in
un'istruzione semplice, non viene restituito alcun valore.
Per visualizzare il risultato, visualizzare il valore della
variabile, nel modo seguente:

C:\PS> $a = 7
C:\PS> ++$a
C:\PS> $a
8

Per forzare la restituzione di un valore, racchiudere la variabile e


l'operatore tra parentesi, nel modo seguente:

C:\PS> $a = 7
C:\PS> (++$a)
8

È possibile posizionare l'operatore di incremento prima


(prefisso) o dopo (suffisso) una variabile. La versione con prefisso
dell'operatore incrementa una variabile prima che il relativo valore venga
utilizzato nell'istruzione, nel modo seguente:

C:\PS> $a = 7
C:\PS> $c = ++$a
C:\PS> $a
8
C:\PS> $c
8

La versione con suffisso dell'operatore incrementa una variabile


dopo che il relativo valore viene utilizzato nell'istruzione.
Nell'esempio seguente, le variabili $c e $a hanno valori diversi
perché il valore viene assegnato a $c prima che $a venga modificato:
C:\PS> $a = 7
C:\PS> $c = $a++
C:\PS> $a
8
C:\PS> $c
7

L'operatore di decremento (--) diminuisce il valore di una


variabile di 1. Come per l'operatore di incremento, quando si utilizza
questo operatore in un'istruzione semplice non viene restituito alcun
valore. Utilizzare le parentesi per restituire un valore, nel modo
seguente:

C:\PS> $a = 7
C:\PS> --$a
C:\PS> $a
6
C:\PS> (--$a)
5

La versione con prefisso dell'operatore decrementa una variabile


prima che il relativo valore venga utilizzato nell'istruzione,
nel modo seguente:

C:\PS> $a = 7
C:\PS> $c = --$a
C:\PS> $a
6
C:\PS> $c
6

La versione con suffisso dell'operatore decrementa una variabile


dopo che il relativo valore viene utilizzato nell'istruzione.
Nell'esempio seguente, le variabili $d e $a hanno valori diversi
perché il valore viene assegnato a $d prima che $a venga modificato:

C:\PS> $a = 7
C:\PS> $d = $a--
C:\PS> $a
6
C:\PS> $d
7

TIPI MICROSOFT .NET FRAMEWORK


Per impostazione predefinita, quando una variabile presenta un
solo valore, il valore assegnato alla variabile determina il tipo
di dati della variabile stessa. Ad esempio, nel comando seguente viene
creata una variabile con tipo Integer (System.Int32):

$a = 6
Per trovare il tipo .NET Framework di una variabile, utilizzare
il metodo GetType e la proprietà FullName, nel modo seguente.
Verificare di includere le parentesi dopo il nome del metodo
GetType, anche se la chiamata al metodo non ha argomenti:

C:\PS> $a = 6
C:\PS> $a.gettype().fullname
System.Int32

Per creare una variabile che contiene una stringa, assegnare un


valore di stringa alla variabile. Per indicare che il valore è
una stringa, racchiuderlo tra virgolette nel modo seguente:

C:\PS> $a = "6"
C:\PS> $a.gettype().fullname
System.String

Se il primo valore assegnato alla variabile è una stringa, in Windows


PowerShell tutte le operazioni vengono trattate come operazioni di
stringa e viene eseguito il cast dei nuovi valori a stringhe. Questa
condizione è illustrata nell'esempio seguente.

C:\PS> $a = "file"
C:\PS> $a += 3
C:\PS> $a
file3

Se il primo valore è un valore intero, in Windows PowerShell tutte le


operazioni vengono trattate come operazioni relative a valori interi
e viene eseguito il cast dei nuovi valori a valori interi. Questa
condizione è illustrata nell'esempio seguente.

C:\PS> $a = 6
C:\PS> $a += "3"
C:\PS> $a
9

È possibile eseguire il cast di una nuova variabile scalare come


qualsiasi tipo .NET Framework specificando il nome del tipo tra
parentesi davanti al nome della variabile o al primo valore di
assegnazione. Quando si esegue il cast di una variabile, è possibile
determinare quali tipi di dati possono essere archiviati nella
variabile. È inoltre possibile determinare il comportamento della
variabile quando viene modificata.

Tramite il comando seguente, ad esempio, viene eseguito il cast della


variabile come tipo stringa:
C:\PS> [string]$a = 27
C:\PS> $a += 3
C:\PS> $a
273

Nell'esempio seguente viene eseguito il cast del primo valore,


anziché della variabile:

$a = [string]27

Quando si esegue il cast di una variabile a un tipo specifico, in


genere si esegue il cast della variabile stessa e non del valore.
Tuttavia, non è possibile eseguire nuovamente il cast del tipo di
dati di una variabile esistente se non è possibile convertire
tale valore nel nuovo tipo di dati. Per modificare il tipo di dati, è
necessario sostituire il valore nel modo seguente:

C:\PS> $a = "stringa"
C:\PS> [int]$a
Impossibile convertire il valore "stringa" nel tipo
"System.Int32". Errore: "Stringa di input non in formato
corretto."
At line:1 char:8
+ [int]$a <<<<

C:\PS> [int]$a =3

Inoltre, anteponendo un tipo di dati a un nome di variabile, il


tipo della variabile viene bloccato a meno che non lo si
sostituisca in modo esplicito specificando un altro tipo di dati.
Se si tenta di assegnare un valore non compatibile con il tipo
esistente e non si sostituisce esplicitamente il tipo, in Windows
PowerShell viene visualizzato un errore, come illustrato nell'esempio
seguente.

C:\PS> $a = 3
C:\PS> $a = "stringa"

C:\PS> [int]$a = 3
C:\PS> $a = "stringa"
Impossibile convertire il valore "stringa" nel tipo
"System.Int32". Errore: "Stringa di input non in formato
corretto."
At line:1 char:3
+ $a <<<< = "stringa"

C:\PS> [string]$a = "stringa"

In Windows PowerShell, i tipi di dati delle variabili che


contengono più elementi in una matrice vengono gestiti in modo
diverso dai tipi di dati delle variabili che contengono un solo
elemento. A meno che a una variabile di tipo matrice non venga
assegnato un tipo di dati specifico, il tipo di dati è sempre
System.Object []. Questo tipo di dati è specifico delle matrici.

Talvolta, è possibile sostituire il tipo predefinito


specificandone un altro. Ad esempio, con il comando seguente
viene eseguito il cast della variabile come tipo matrice string[]:

[string []] $a = "one", "two", "three"

Le variabili di Windows PowerShell possono essere di qualsiasi tipo di


dati .NET Framework. È inoltre possibile assegnare qualsiasi tipo di
dati .NET Framework completo disponibile nel processo corrente. Ad
esempio, nel comando seguente viene specificato il tipo System.DateTime:

[system.datetime]$a = "5/31/2005"

Alla variabile verrà assegnato un valore conforme al tipo di dati


System.DateTime. Il valore della variabile $a sarà il seguente:

martedì, 31 maggio 2005 12.00.00

ASSEGNAZIONE DI PIÙ VARIABILI


In Windows PowerShell è possibile assegnare valori a più
variabili con un unico comando. Il primo elemento del valore di
assegnazione viene assegnato alla prima variabile, il secondo
alla seconda variabile, il terzo alla terza variabile e così via.
Ad esempio, mediante il comando seguente viene assegnato il
valore 1 alla variabile $a, il valore 2 alla variabile $b e il
valore 3 alla variabile $c:

C:\PS> $a, $b, $c = 1, 2, 3

Se il valore di assegnazione contiene un numero di elementi maggiore


rispetto al numero di variabili, tutti i valori rimanenti vengono
assegnati all'ultima variabile. Ad esempio, il comando seguente
contiene tre variabili e cinque valori:

$a, $b, $c = 1, 2, 3, 4, 5

Pertanto, in Windows PowerShell il valore 1 viene assegnato alla


variabile $a e il valore 2 viene assegnato alla variabile $b. I
valori 3, 4 e 5 vengono assegnati alla variabile $c. Per
assegnare i valori della variabile $c ad altre tre variabili,
utilizzare il formato seguente:

$d, $e, $f = $c
Con questo comando il valore 3 viene assegnato alla variabile $d,
il valore 4 alla variabile $e e il valore 5 alla variabile $f.

È inoltre possibile assegnare un singolo valore a più variabili


concatenando le variabili. Tramite il comando seguente, ad
esempio, viene assegnato il valore "tre" a tutte e quattro le
variabili:

$a = $b = $c = $d = "three"

CMDLET CORRELATI ALLE VARIABILI


Oltre a utilizzare un'operazione di assegnazione per impostare il
valore di una variabile, è inoltre possibile utilizzare il cmdlet Set-
Variable. Ad esempio, nel comando seguente viene utilizzato
Set-Variable per assegnare una matrice costituita da 1, 2, 3 alla
variabile $a.

Set-Variable -name a -value 1, 2, 3

VEDERE ANCHE
about_Arrays
about_Hash_Tables
about_Variables
Clear-Variable
Remove-Variable
Set-Variable

Potrebbero piacerti anche