147 votes

Que fait le symbole "@" dans PowerShell ?

J'ai vu le @ utilisé dans PowerShell pour initialiser les tableaux.

Que fait exactement le @ et où puis-je en savoir plus ?

136voto

Dans PowerShell V2, @ est également l'option Opérateur d'éclaboussures .

PS> # First use it to create a hashtable of parameters:
PS> $params = @{path = "c:\temp"; Recurse= $true}
PS> # Then use it to SPLAT the parameters - which is to say to expand a hash table 
PS> # into a set of command line parameters.
PS> dir @params
PS> # That was the equivalent of:
PS> dir -Path c:\temp -Recurse:$true

3 votes

C'est ce que je cherchais : cet opérateur est utilisé dans le contexte splat dans le déploiement du groupe de ressources Azure scripts.

101voto

Don Jones Points 4788

PowerShell traitera en fait toute liste séparée par des virgules comme un tableau :

"server1","server2"

Le @ est donc facultatif dans ces cas. Cependant, pour les tableaux associatifs, le @ est obligatoire :

@{"Key"="Value";"Key2"="Value2"}

Officiellement, @ est l'"opérateur de tableau". Vous pouvez en savoir plus à ce sujet dans la documentation installée avec PowerShell, ou dans un livre comme "Windows PowerShell : TFM", que j'ai co-écrit.

13 votes

N'oubliez pas de consulter la réponse de Jeffrey Snover ci-dessous... @ est plus qu'un simple identifiant de tableau.

31voto

Mike Shepard Points 5109

Vous pouvez également envelopper la sortie d'une cmdlet (ou d'un pipeline) dans un fichier @() pour s'assurer que ce que vous obtenez en retour est un tableau plutôt qu'un seul élément.

Par exemple, dir renvoie généralement une liste, mais selon les options, il peut renvoyer un seul objet. Si vous prévoyez d'itérer à travers les résultats avec un foreach-object, vous devez vous assurer que vous obtenez une liste en retour. Voici un exemple artificiel :

$results = @( dir c:\autoexec.bat)

Une dernière chose... un tableau vide (comme pour initialiser une variable) est noté @() .

0 votes

La syntaxe [array]$a est un peu plus claire, visuellement, mais bon conseil.

15voto

12voto

Cadoo Points 476

L'opérateur d'éclaboussures

Pour créer un tableau, on crée une variable et on lui attribue le tableau. Les tableaux sont signalés par le symbole "@". Reprenons la discussion ci-dessus et utilisons un tableau pour nous connecter à plusieurs ordinateurs distants :

$strComputers = @("Server1", "Server2", "Server3")<enter>

Ils sont utilisés pour les tableaux et les hachages.

Tutoriel PowerShell 7 : Accumuler, rappeler et modifier des données

Les littéraux de tableau dans PowerShell

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X