Informazioni sugli operatori di assegnazioneAbout Assignment Operators

Breve descrizioneShort description

Viene descritto come utilizzare gli operatori per assegnare valori alle variabili.Describes how to use operators to assign values to variables.

Descrizione lungaLong description

Gli operatori di assegnazione assegnano uno o più valori a una variabile.Assignment operators assign one or more values to a variable. Possono eseguire operazioni numeriche sui valori prima dell'assegnazione.They can perform numeric operations on the values before the assignment.

PowerShell supporta gli operatori di assegnazione seguenti.PowerShell supports the following assignment operators.

OperatoreOperator DescrizioneDescription
= Imposta il valore di una variabile sul valore specificato.Sets the value of a variable to the specified value.
+= Aumenta il valore di una variabile in base al valore specificato oIncreases the value of a variable by the specified value, or
aggiunge il valore specificato al valore esistente.appends the specified value to the existing value.
-= Riduce il valore di una variabile in base al valore specificato.Decreases the value of a variable by the specified value.
*= Moltiplica il valore di una variabile in base al valore specificato.Multiplies the value of a variable by the specified value, or
aggiunge il valore specificato al valore esistente.appends the specified value to the existing value.
/= Divide il valore di una variabile in base al valore specificato.Divides the value of a variable by the specified value.
%= Divide il valore di una variabile in base al valore specificato eDivides the value of a variable by the specified value and
assegna quindi il resto (modulo) alla variabile.then assigns the remainder (modulus) to the variable.
++ Aumenta il valore di una variabile, di una proprietà assegnabile o diIncreases the value of a variable, assignable property, or
elemento della matrice di 1.array element by 1.
-- Riduce il valore di una variabile, una proprietà assegnabile oDecreases the value of a variable, assignable property, or
elemento della matrice di 1.array element by 1.

SintassiSyntax

La sintassi degli operatori di assegnazione è la seguente:The syntax of the assignment operators is as follows:

<assignable-expression> <assignment-operator> <value><assignable-expression> <assignment-operator> <value>

Le espressioni assegnabili includono variabili e proprietà.Assignable expressions include variables and properties. Il valore può essere un singolo valore, una matrice di valori o un comando, un'espressione o un'istruzione.The value can be a single value, an array of values, or a command, expression, or statement.

Gli operatori di incremento e decremento sono operatori unari.The increment and decrement operators are unary operators. Ogni ha versioni di prefisso e suffisso.Each has prefix and postfix versions.

<assignable-expression><operator> <operator><assignable-expression>

L'espressione assegnabile deve essere un numero o deve essere convertibile in un numero.The assignable expression must be a number or it must be convertible to a number.

Assegnazione di valoriAssigning values

Le variabili sono spazi di memoria denominati che archiviano i valori.Variables are named memory spaces that store values. Per archiviare i valori nelle variabili, usare l'operatore di assegnazione = .You store the values in variables by using the assignment operator =. Il nuovo valore può sostituire il valore esistente della variabile oppure è possibile aggiungere un nuovo valore al valore esistente.The new value can replace the existing value of the variable, or you can append a new value to the existing value.

L'operatore di assegnazione di base è il segno di uguale = (ASCII 61) .The basic assignment operator is the equal sign = (ASCII 61). L'istruzione seguente, ad esempio, assegna il valore PowerShell alla $MyShell variabile:For example, the following statement assigns the value PowerShell to the $MyShell variable:

$MyShell = "PowerShell"

Quando si assegna un valore a una variabile in PowerShell, la variabile viene creata se non esiste già.When you assign a value to a variable in PowerShell, the variable is created if it did not already exist. Ad esempio, la prima delle due istruzioni di assegnazione seguenti crea la $a variabile e assegna un valore pari a 6 a $a .For example, the first of the following two assignment statements creates the $a variable and assigns a value of 6 to $a. La seconda istruzione di assegnazione assegna un valore di 12 a $a .The second assignment statement assigns a value of 12 to $a. La prima istruzione crea una nuova variabile.The first statement creates a new variable. La seconda istruzione modifica solo il relativo valore:The second statement changes only its value:

$a = 6
$a = 12

Le variabili in PowerShell non hanno un tipo di dati specifico, a meno che non ne venga eseguito il cast.Variables in PowerShell do not have a specific data type unless you cast them. Quando una variabile contiene un solo oggetto, la variabile accetta il tipo di dati di tale oggetto.When a variable contains only one object, the variable takes the data type of that object. Quando una variabile contiene una raccolta di oggetti, la variabile ha il tipo di dati System. Object.When a variable contains a collection of objects, the variable has the System.Object data type. Pertanto, è possibile assegnare qualsiasi tipo di oggetto alla raccolta.Therefore, you can assign any type of object to the collection. Nell'esempio seguente viene illustrato che è possibile aggiungere oggetti processo, oggetti servizio, stringhe e numeri interi a una variabile senza generare un errore:The following example shows that you can add process objects, service objects, strings, and integers to a variable without generating an error:

$a = Get-Process
$a += Get-Service
$a += "string"
$a += 12

Poiché l'operatore di assegnazione = ha una precedenza inferiore rispetto all'operatore pipeline | , le parentesi non sono necessarie per assegnare il risultato di una pipeline di comando a una variabile.Because the assignment operator = has a lower precedence than the pipeline operator |, parentheses are not required to assign the result of a command pipeline to a variable. Ad esempio, il comando seguente ordina i servizi nel computer e quindi assegna i servizi ordinati alla $a variabile:For example, the following command sorts the services on the computer and then assigns the sorted services to the $a variable:

$a = Get-Service | Sort-Object -Property name

È anche possibile assegnare il valore creato da un'istruzione a una variabile, come nell'esempio seguente:You can also assign the value created by a statement to a variable, as in the following example:

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

Questo esempio assegna zero alla $a variabile se il valore di $b è minore di zero.This example assigns zero to the $a variable if the value of $b is less than zero. Assegna il valore di $b a $a se il valore di $b non è minore di zero.It assigns the value of $b to $a if the value of $b is not less than zero.

Operatore di assegnazioneThe assignment operator

L'operatore = di assegnazione assegna i valori alle variabili.The assignment operator = assigns values to variables. Se la variabile dispone già di un valore, l'operatore di assegnazione = sostituisce il valore senza avviso.If the variable already has a value, the assignment operator = replaces the value without warning.

Nell'istruzione seguente viene assegnato il valore integer 6 alla $a variabile:The following statement assigns the integer value 6 to the $a variable:

$a = 6

Per assegnare un valore stringa a una variabile, racchiudere il valore stringa tra virgolette, come indicato di seguito:To assign a string value to a variable, enclose the string value in quotation marks, as follows:

$a = "baseball"

Per assegnare una matrice (più valori) a una variabile, separare i valori con virgole, come indicato di seguito:To assign an array (multiple values) to a variable, separate the values with commas, as follows:

$a = "apple", "orange", "lemon", "grape"

Per assegnare una tabella hash a una variabile, usare la notazione della tabella hash standard in PowerShell.To assign a hash table to a variable, use the standard hash table notation in PowerShell. Digitare un segno di chiocciola @ seguito da coppie chiave/valore separate da punti e virgola ; e racchiuse tra parentesi graffe { } .Type an at sign @ followed by key/value pairs that are separated by semicolons ; and enclosed in braces { }. Ad esempio, per assegnare una tabella hash alla $a variabile, digitare:For example, to assign a hash table to the $a variable, type:

$a = @{one=1; two=2; three=3}

Per assegnare valori esadecimali a una variabile, anteporre al valore 0x .To assign hexadecimal values to a variable, precede the value with 0x. PowerShell converte il valore esadecimale (0x10) in un valore decimale (in questo caso, 16) e assegna tale valore alla $a variabile.PowerShell converts the hexadecimal value (0x10) to a decimal value (in this case, 16) and assigns that value to the $a variable. Ad esempio, per assegnare un valore di 0x10 alla $a variabile, digitare:For example, to assign a value of 0x10 to the $a variable, type:

$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.To assign an exponential value to a variable, type the root number, the letter e, and a number that represents a multiple of 10. Ad esempio, per assegnare un valore 3,1415 alla potenza di 1.000 alla $a variabile, digitare:For example, to assign a value of 3.1415 to the power of 1,000 to the $a variable, type:

$a = 3.1415e3

PowerShell può anche convertire kilobyte KB , megabyte MB e Gigabyte GB in byte.PowerShell can also convert kilobytes KB, megabytes MB, and gigabytes GB into bytes. Ad esempio, per assegnare un valore di 10 kilobyte alla $a variabile, digitare:For example, to assign a value of 10 kilobytes to the $a variable, type:

$a = 10kb

Operatore di assegnazione per addizioneThe assignment by addition operator

L'operatore di assegnazione per addizione += incrementa il valore di una variabile o aggiunge il valore specificato al valore esistente.The assignment by addition operator += either increments the value of a variable or appends the specified value to the existing value. L'azione varia a seconda che la variabile disponga di un tipo numerico o stringa e che la variabile contenga un solo valore (scalare) o più valori (raccolta).The action depends on whether the variable has a numeric or string type and whether the variable contains a single value (a scalar) or multiple values (a collection).

L' += operatore combina due operazioni.The += operator combines two operations. In primo luogo, aggiunge e quindi assegna.First, it adds, and then it assigns. Pertanto, le istruzioni seguenti sono equivalenti:Therefore, the following statements are equivalent:

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

Quando la variabile contiene un solo valore numerico, l' += operatore incrementa il valore esistente in base alla quantità sul lato destro dell'operatore.When the variable contains a single numeric value, the += operator increments the existing value by the amount on the right side of the operator. Quindi, l'operatore assegna il valore risultante alla variabile.Then, the operator assigns the resulting value to the variable. Nell'esempio seguente viene illustrato come utilizzare l' += operatore per aumentare il valore di una variabile:The following example shows how to use the += operator to increase the value of a variable:

$a = 4
$a += 2
$a
6

Quando il valore della variabile è una stringa, il valore sul lato destro dell'operatore viene aggiunto alla stringa, come indicato di seguito:When the value of the variable is a string, the value on the right side of the operator is appended to the string, as follows:

$a = "Windows"
$a += " PowerShell"
$a
Windows PowerShell

Quando il valore della variabile è una matrice, l' += operatore aggiunge i valori sul lato destro dell'operatore alla matrice.When the value of the variable is an array, the += operator appends the values on the right side of the operator to the array. A meno che la matrice non sia tipizzata in modo esplicito mediante il cast, è possibile aggiungere qualsiasi tipo di valore alla matrice, come indicato di seguito:Unless the array is explicitly typed by casting, you can append any type of value to the array, as follows:

$a = 1,2,3
$a += 2
$a
1
2
3
2

eand

$a += "String"
$a
1
2
3
2
String

Quando il valore di una variabile è una tabella hash, l' += operatore aggiunge il valore sul lato destro dell'operatore alla tabella hash.When the value of a variable is a hash table, the += operator appends the value on the right side of the operator to the hash table. Tuttavia, poiché l'unico tipo che è possibile aggiungere a una tabella hash è un'altra tabella hash, tutte le altre assegnazioni hanno esito negativo.However, because the only type that you can add to a hash table is another hash table, all other assignments fail.

Ad esempio, il comando seguente assegna una tabella hash alla $a variabile.For example, the following command assigns a hash table to the $a variable. USA quindi l' += operatore per accodare un'altra tabella hash alla tabella hash esistente, aggiungendo effettivamente una nuova coppia chiave/valore alla tabella hash esistente.Then, it uses the += operator to append another hash table to the existing hash table, effectively adding a new key/value pair to the existing hash table. Questo comando ha esito positivo, come illustrato nell'output:This command succeeds, as shown in the output:

$a = @{a = 1; b = 2; c = 3}
$a += @{mode = "write"}
$a
Name                           Value
----                           -----
a                              1
b                              2
mode                           write
c                              3

Il comando seguente tenta di aggiungere un intero "1" alla tabella hash nella $a variabile.The following command attempts to append an integer "1" to the hash table in the $a variable. Questo comando non riesce:This command fails:

$a = @{a = 1; b = 2; c = 3}
$a += 1
You can add another hash table only to a hash table.
At line:1 char:6
+ $a += <<<<  1

Operatore di assegnazione mediante sottrazioneThe assignment by subtraction operator

L'operatore di assegnazione mediante sottrazione -= decrementa il valore di una variabile in base al valore specificato sul lato destro dell'operatore.The assignment by subtraction operator -= decrements the value of a variable by the value that is specified on the right side of the operator. Questo operatore non può essere usato con variabili stringa e non può essere usato per rimuovere un elemento da una raccolta.This operator cannot be used with string variables, and it cannot be used to remove an element from a collection.

L' -= operatore combina due operazioni.The -= operator combines two operations. Innanzitutto, sottrae e quindi assegna.First, it subtracts, and then it assigns. Pertanto, le istruzioni seguenti sono equivalenti:Therefore, the following statements are equivalent:

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

Nell'esempio seguente viene illustrato come utilizzare l' -= operatore per ridurre il valore di una variabile:The following example shows how to use of the -= operator to decrease the value of a variable:

$a = 8
$a -= 2
$a
6

È anche possibile usare l' -= operatore di assegnazione per ridurre il valore di un membro di una matrice numerica.You can also use the -= assignment operator to decrease the value of a member of a numeric array. A tale scopo, specificare l'indice dell'elemento di matrice che si desidera modificare.To do this, specify the index of the array element that you want to change. Nell'esempio seguente, il valore del terzo elemento di una matrice (elemento 2) viene diminuito di 1:In the following example, the value of the third element of an array (element 2) is decreased by 1:

$a = 1,2,3
$a[2] -= 1
$a
1
2
2

Non è possibile usare l' -= operatore per eliminare i valori di una variabile.You cannot use the -= operator to delete the values of a variable. Per eliminare tutti i valori assegnati a una variabile, usare i cmdlet Clear-Item o Clear-Variable per assegnare un valore $null o "" alla variabile.To delete all the values that are assigned to a variable, use the Clear-Item or Clear-Variable cmdlets to assign a value of $null or "" to the variable.

$a = $null

Per eliminare un valore specifico da una matrice, usare la notazione di matrice per assegnare un valore $null a un elemento specifico.To delete a particular value from an array, use array notation to assign a value of $null to the particular item. Ad esempio, l'istruzione seguente elimina il secondo valore (posizione indice 1) da una matrice:For example, the following statement deletes the second value (index position 1) from an array:

$a = 1,2,3
$a
1
2
3
$a[1] = $null
$a
1
3

Per eliminare una variabile, usare il cmdlet Remove-Variable .To delete a variable, use the Remove-Variable cmdlet. Questo metodo è utile quando la variabile viene sottoposta a cast esplicito a un tipo di dati specifico e si desidera una variabile non tipizzata.This method is useful when the variable is explicitly cast to a particular data type, and you want an untyped variable. Il comando seguente elimina la $a variabile:The following command deletes the $a variable:

Remove-Variable -Name a

Operatore di assegnazione per moltiplicazioneThe assignment by multiplication operator

L'operatore di assegnazione mediante moltiplicazione *= moltiplica un valore numerico o aggiunge il numero specificato di copie del valore stringa di una variabile.The assignment by multiplication operator *= multiplies a numeric value or appends the specified number of copies of the string value of a variable.

Quando una variabile contiene un solo valore numerico, tale valore viene moltiplicato per il valore sul lato destro dell'operatore.When a variable contains a single numeric value, that value is multiplied by the value on the right side of the operator. Ad esempio, nell'esempio seguente viene illustrato come utilizzare l' *= operatore per moltiplicare il valore di una variabile:For example, the following example shows how to use the *= operator to multiply the value of a variable:

$a = 3
$a *= 4
$a
12

In questo caso, l' *= operatore combina due operazioni.In this case, the *= operator combines two operations. Innanzitutto, moltiplica e assegna.First, it multiplies, and then it assigns. Pertanto, le istruzioni seguenti sono equivalenti:Therefore, the following statements are equivalent:

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

Quando una variabile contiene un valore stringa, PowerShell aggiunge il numero specificato di stringhe al valore, come indicato di seguito:When a variable contains a string value, PowerShell appends the specified number of strings to the value, as follows:

$a = "file"
$a *= 4
$a
filefilefilefile

Per moltiplicare un elemento di una matrice, usare un indice per identificare l'elemento che si desidera moltiplicare.To multiply an element of an array, use an index to identify the element that you want to multiply. Il comando seguente, ad esempio, moltiplica il primo elemento nella matrice (posizione di indice 0) per 2:For example, the following command multiplies the first element in the array (index position 0) by 2:

$a[0] *= 2

Operatore di assegnazione per divisioneThe assignment by division operator

L'operatore di assegnazione per divisione /= divide un valore numerico in base al valore specificato sul lato destro dell'operatore.The assignment by division operator /= divides a numeric value by the value that is specified on the right side of the operator. L'operatore non può essere usato con variabili di stringa.The operator cannot be used with string variables.

L' /= operatore combina due operazioni.The /= operator combines two operations. Innanzitutto, divide e quindi assegna.First, it divides, and then it assigns. Pertanto, le due istruzioni seguenti sono equivalenti:Therefore, the following two statements are equivalent:

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

Ad esempio, il comando seguente usa l' /= operatore per dividere il valore di una variabile:For example, the following command uses the /= operator to divide the value of a variable:

$a = 8
$a /=2
$a
4

Per dividere un elemento di una matrice, usare un indice per identificare l'elemento che si vuole modificare.To divide an element of an array, use an index to identify the element that you want to change. Ad esempio, il comando seguente divide il secondo elemento della matrice (posizione indice 1) per 2:For example, the following command divides the second element in the array (index position 1) by 2:

$a[1] /= 2

Operatore di assegnazione per moduloThe assignment by modulus operator

L'operatore di assegnazione per modulo %= divide il valore di una variabile per il valore sul lato destro dell'operatore.The assignment by modulus operator %= divides the value of a variable by the value on the right side of the operator. Quindi, l' %= operatore assegna alla variabile il resto (noto come modulo).Then, the %= operator assigns the remainder (known as the modulus) to the variable. È possibile utilizzare questo operatore solo se una variabile contiene un solo valore numerico.You can use this operator only when a variable contains a single numeric value. Non è possibile utilizzare questo operatore quando una variabile contiene una variabile stringa o una matrice.You cannot use this operator when a variable contains a string variable or an array.

L' %= operatore combina due operazioni.The %= operator combines two operations. Innanzitutto, divide e determina il resto, quindi assegna il resto alla variabile.First, it divides and determines the remainder, and then it assigns the remainder to the variable. Pertanto, le istruzioni seguenti sono equivalenti:Therefore, the following statements are equivalent:

$a %= 2
$a = ($a % 2)

Nell'esempio seguente viene illustrato come utilizzare l' %= operatore per salvare il modulo di un quoziente:The following example shows how to use the %= operator to save the modulus of a quotient:

$a = 7
$a %= 4
$a
3

Operatori di incremento e decrementoThe increment and decrement operators

L'operatore Increment ++ aumenta di 1 il valore di una variabile.The increment operator ++ increases the value of a variable by 1. Quando si usa l'operatore di incremento in un'istruzione semplice, non viene restituito alcun valore.When you use the increment operator in a simple statement, no value is returned. Per visualizzare il risultato, visualizzare il valore della variabile, come indicato di seguito:To view the result, display the value of the variable, as follows:

$a = 7
++$a
$a
8

Per forzare la restituzione di un valore, racchiudere tra parentesi la variabile e l'operatore, come indicato di seguito:To force a value to be returned, enclose the variable and the operator in parentheses, as follows:

$a = 7
(++$a)
8

L'operatore Increment può essere inserito prima (prefisso) o dopo (suffisso) una variabile.The increment operator can be placed before (prefix) or after (postfix) a variable. La versione prefisso dell'operatore incrementa una variabile prima che il relativo valore venga usato nell'istruzione, come indicato di seguito:The prefix version of the operator increments a variable before its value is used in the statement, as follows:

$a = 7
$c = ++$a
$a
8
$c
8

La versione suffissa dell'operatore incrementa una variabile dopo che il relativo valore viene usato nell'istruzione.The postfix version of the operator increments a variable after its value is used in the statement. Nell'esempio seguente le $c $a variabili e hanno valori diversi, perché il valore viene assegnato a $c prima $a delle modifiche:In the following example, the $c and $a variables have different values because the value is assigned to $c before $a changes:

$a = 7
$c = $a++
$a
8
$c
7

L'operatore di decremento -- diminuisce di 1 il valore di una variabile.The decrement operator -- decreases the value of a variable by 1. Come per l'operatore Increment, non viene restituito alcun valore quando si usa l'operatore in un'istruzione semplice.As with the increment operator, no value is returned when you use the operator in a simple statement. Usare le parentesi per restituire un valore, come indicato di seguito:Use parentheses to return a value, as follows:

$a = 7
--$a
$a
6
(--$a)
5

La versione del prefisso dell'operatore decrementa una variabile prima che il relativo valore venga usato nell'istruzione, come indicato di seguito:The prefix version of the operator decrements a variable before its value is used in the statement, as follows:

$a = 7
$c = --$a
$a
6
$c
6

La versione suffissa dell'operatore decrementa una variabile dopo che il relativo valore viene usato nell'istruzione.The postfix version of the operator decrements a variable after its value is used in the statement. Nell'esempio seguente le $d $a variabili e hanno valori diversi, perché il valore viene assegnato a $d prima $a delle modifiche:In the following example, the $d and $a variables have different values because the value is assigned to $d before $a changes:

$a = 7
$d = $a--
$a
6
$d
7

Tipi di Microsoft .NET FrameworkMicrosoft .NET Framework types

Per impostazione predefinita, quando una variabile ha un solo valore, il valore assegnato alla variabile determina il tipo di dati della variabile.By default, when a variable has only one value, the value that is assigned to the variable determines the data type of the variable. Ad esempio, il comando seguente crea una variabile con il tipo "Integer" (System. Int32):For example, the following command creates a variable that has the "Integer" (System.Int32) type:

$a = 6

Per trovare il tipo di .NET Framework di una variabile, usare il metodo GetType e la relativa proprietà FullName , come indicato di seguito.To find the .NET Framework type of a variable, use the GetType method and its FullName property, as follows. Assicurarsi di includere le parentesi dopo il nome del metodo GetType , anche se la chiamata al metodo non ha argomenti:Be sure to include the parentheses after the GetType method name, even though the method call has no arguments:

$a = 6
$a.GetType().FullName
System.Int32

Per creare una variabile che contiene una stringa, assegnare un valore stringa alla variabile.To create a variable that contains a string, assign a string value to the variable. Per indicare che il valore è una stringa, racchiuderlo tra virgolette, come indicato di seguito:To indicate that the value is a string, enclose it in quotation marks, as follows:

$a = "6"
$a.GetType().FullName
System.String

Se il primo valore assegnato alla variabile è una stringa, PowerShell considera tutte le operazioni come operazioni di stringa ed esegue il cast di nuovi valori in stringhe.If the first value that is assigned to the variable is a string, PowerShell treats all operations as string operations and casts new values to strings. Questo errore si verifica nell'esempio seguente:This occurs in the following example:

$a = "file"
$a += 3
$a
file3

Se il primo valore è un numero intero, PowerShell considera tutte le operazioni come operazioni integer ed esegue il cast di nuovi valori in numeri interi.If the first value is an integer, PowerShell treats all operations as integer operations and casts new values to integers. Questo errore si verifica nell'esempio seguente:This occurs in the following example:

$a = 6
$a += "3"
$a
9

È possibile eseguire il cast di una nuova variabile scalare come qualsiasi tipo di .NET Framework inserendo il nome del tipo tra parentesi quadre che precede il nome della variabile o il primo valore di assegnazione.You can cast a new scalar variable as any .NET Framework type by placing the type name in brackets that precede either the variable name or the first assignment value. Quando si esegue il cast di una variabile, è possibile determinare i tipi di dati che possono essere archiviati nella variabile.When you cast a variable, you can determine the types of data that can be stored in the variable. È possibile determinare il comportamento della variabile quando viene modificata.And, you can determine how the variable behaves when you manipulate it.

Ad esempio, il comando seguente esegue il cast della variabile come tipo stringa:For example, the following command casts the variable as a string type:

[string]$a = 27
$a += 3
$a
273

Nell'esempio seguente viene eseguito il cast del primo valore anziché eseguire il cast della variabile:The following example casts the first value, instead of casting the variable:

$a = [string]27

Quando si esegue il cast di una variabile a un tipo specifico, la convenzione comune consiste nel eseguire il cast della variabile, non del valore.When you cast a variable to a specific type, the common convention is to cast the variable, not the value. Tuttavia, non è possibile eseguire nuovamente il cast del tipo di dati di una variabile esistente se il relativo valore non può essere convertito nel nuovo tipo di dati.However, you cannot recast the data type of an existing variable if its value cannot be converted to the new data type. Per modificare il tipo di dati, è necessario sostituirne il valore, come indicato di seguito:To change the data type, you must replace its value, as follows:

$a = "string"
[int]$a
Cannot convert value "string" to type "System.Int32". Error: "Input string was
not in a correct format." At line:1 char:8 + [int]$a <<<<
[int]$a = 3

Inoltre, quando si precede il nome di una variabile con un tipo di dati, il tipo di tale variabile viene bloccato a meno che non si esegua l'override esplicito del tipo specificando un altro tipo di dati.In addition, when you precede a variable name with a data type, the type of that variable is locked unless you explicitly override the type by specifying another data type. Se si tenta di assegnare un valore incompatibile con il tipo esistente e non si esegue l'override esplicito del tipo, in PowerShell viene visualizzato un errore, come illustrato nell'esempio seguente:If you try to assign a value that is incompatible with the existing type, and you do not explicitly override the type, PowerShell displays an error, as shown in the following example:

$a = 3
$a = "string"
[int]$a = 3
$a = "string"
Cannot convert value "string" to type "System.Int32". Error: "Input
string was not in a correct format."
At line:1 char:3
+ $a <<<<  = "string"
[string]$a = "string"

In PowerShell i tipi di dati delle variabili che contengono più elementi in una matrice vengono gestiti in modo diverso rispetto ai tipi di dati delle variabili contenenti un singolo elemento.In PowerShell, the data types of variables that contain multiple items in an array are handled differently from the data types of variables that contain a single item. A meno che un tipo di dati non venga assegnato in modo specifico a una variabile di matrice, il tipo di dati è sempre System.Object [] .Unless a data type is specifically assigned to an array variable, the data type is always System.Object []. Questo tipo di dati è specifico per le matrici.This data type is specific to arrays.

In alcuni casi, è possibile eseguire l'override del tipo predefinito specificando un altro tipo.Sometimes, you can override the default type by specifying another type. Ad esempio, il comando seguente esegue il cast della variabile come string [] tipo di matrice:For example, the following command casts the variable as a string [] array type:

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

Le variabili di PowerShell possono essere qualsiasi tipo di dati .NET Framework.PowerShell variables can be any .NET Framework data type. Inoltre, è possibile assegnare qualsiasi tipo di dati completo .NET Framework disponibile nel processo corrente.In addition, you can assign any fully qualified .NET Framework data type that is available in the current process. Il comando seguente, ad esempio, specifica un System.DateTime tipo di dati:For example, the following command specifies a System.DateTime data type:

[System.DateTime]$a = "5/31/2005"

Alla variabile verrà assegnato un valore conforme al System.DateTime tipo di dati.The variable will be assigned a value that conforms to the System.DateTime data type. Il valore della $a variabile sarà il seguente:The value of the $a variable would be the following:

Tuesday, May 31, 2005 12:00:00 AM

Assegnazione di più variabiliAssigning multiple variables

In PowerShell è possibile assegnare valori a più variabili usando un unico comando.In PowerShell, you can assign values to multiple variables by using a single command. Il primo elemento del valore di assegnazione viene assegnato alla prima variabile, il secondo elemento viene assegnato alla seconda variabile, il terzo elemento alla terza variabile e così via.The first element of the assignment value is assigned to the first variable, the second element is assigned to the second variable, the third element to the third variable, and so on. Il comando seguente, ad esempio, assegna il valore 1 alla variabile $a , il valore 2 alla $b variabile e il valore 3 alla $c variabile:For example, the following command assigns the value 1 to the $a variable, the value 2 to the $b variable, and the value 3 to the $c variable:

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

Se il valore di assegnazione contiene più elementi delle variabili, tutti i valori rimanenti vengono assegnati all'ultima variabile.If the assignment value contains more elements than variables, all the remaining values are assigned to the last variable. Il comando seguente, ad esempio, contiene tre variabili e cinque valori:For example, the following command contains three variables and five values:

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

PowerShell assegna pertanto il valore 1 alla $a variabile e il valore 2 alla $b variabile.Therefore, PowerShell assigns the value 1 to the $a variable and the value 2 to the $b variable. Assegna i valori 3, 4 e 5 alla $c variabile.It assigns the values 3, 4, and 5 to the $c variable. Per assegnare i valori della $c variabile a altre tre variabili, usare il formato seguente:To assign the values in the $c variable to three other variables, use the following format:

$d, $e, $f = $c

Questo comando assegna il valore 3 alla variabile $d , il valore 4 alla $e variabile e il valore 5 alla $f variabile.This command assigns the value 3 to the $d variable, the value 4 to the $e variable, and the value 5 to the $f variable.

Se il valore di assegnazione contiene meno elementi rispetto alle variabili, a tutte le variabili rimanenti alla fine non vengono assegnati valori.If the assignment value contains less elements than variables, all the remaining variables at the end are not assigned any values. Il comando seguente, ad esempio, contiene tre variabili e due valori:For example, the following command contains three variables and two values:

$a, $b, $c = 1, 2

PowerShell assegna pertanto il valore 1 alla $a variabile e il valore 2 alla $b variabile.Therefore, PowerShell assigns the value 1 to the $a variable and the value 2 to the $b variable. Non verrà assegnato alcun valore alla $c variabile.It will not assign any value to the $c variable.

È anche possibile assegnare un singolo valore a più variabili concatenando le variabili.You can also assign a single value to multiple variables by chaining the variables. Ad esempio, il comando seguente assegna un valore "Three" a tutte e quattro le variabili:For example, the following command assigns a value of "three" to all four variables:

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

Oltre a usare un'operazione di assegnazione per impostare un valore di variabile, è anche possibile usare il cmdlet set-variable .In addition to using an assignment operation to set a variable value, you can also use the Set-Variable cmdlet. Ad esempio, il comando seguente usa Set-Variable per assegnare una matrice di 1, 2, 3 alla $a variabile.For example, the following command uses Set-Variable to assign an array of 1, 2, 3 to the $a variable.

Set-Variable -Name a -Value 1, 2, 3

Vedere ancheSee also

about_Arraysabout_Arrays

about_Hash_Tablesabout_Hash_Tables

about_Variablesabout_Variables

Clear-VariableClear-Variable

Remove-VariableRemove-Variable

Set-VariableSet-Variable