Question
ArrayList et Format-wide
- lakcil
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 23
- Remerciements reçus 0
Je cherche désespérément à afficher le contenu d'un arrayliste en nombre de colonnes automatique via format-wide.
Après des recherches j'ai trouvé ceci qui marchait jusque là:
[code:1]
$maliste = New-Object System.Collections.ArrayList
# je remplie ma liste
maliste | Format-Wide {$_} -Force -AutoSize[/code:1]
mon problème: j'ai une fonction qui renvoie un arraylist et lorsque j'applique le code précédent sur le retour de ma fonction, j'ai une belle erreur:
out-lineoutput : L'objet de type « Microsoft.PowerShell.Commands.Internal.Format.FormatStartData » n'est pas valide ou n'apparaît pas dans
l'ordre approprié. La raison en est probablement un conflit entre une commande « format-wide » spécifiée par l'utilisateur et la mise en forme par défaut.
Merci pour vos retours.<br><br>Message édité par: Arnaud, à: 20/09/11 11:54
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
Pourrais tu poster le code qui te permet de \"peupler\" ton arraylist pour que je puisse tester ?
D'autre part, l'utilisation de la commande Format-Wide suivi des accolades et de $_ me semble bizarre.
J'aurais plutôt écrit quelque chose comme :
[code:1]
$maListe | Format-Wide -AutoSize
[/code:1]
Arnaud<br><br>Message édité par: Arnaud, à: 20/09/11 11:54
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- lakcil
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 23
- Remerciements reçus 0
Bonjour,
Pourrais tu poster le code qui te permet de \"peupler\" ton arraylist pour que je puisse tester ?
Mon code compare deux liste de vm: une première liste issue d'un fichier et une deuxième liste issue des vm présentes dans le vcenter.
En gros je mets dans une liste les vm présentes dans un fichier et absentes du vcenter.
function listeVMAbsentes (){
param([System.Collections.ArrayList]$listeSrc,[System.Collections.ArrayList]$listeComparee)
$listeVMAbsent = New-Object System.Collections.ArrayList
#Compare 2 liste, le signe => indique les elts dans la 2ème et non presents dans la 1ère
Compare-Object $listeSrc $listeComparee | Where-Object { $_.SideIndicator -eq '=>'} | Foreach-Object { $listeVMAbsent.Add($_.InputObject) | Out-Null}
return $listeVMAbsent
}
D'autre part, l'utilisation de la commande Format-Wide suivi des accolades et de $_ me semble bizarre.
J'aurais plutôt écrit quelque chose comme :
[code:1]
$maListe | Format-Wide -AutoSize
[/code:1]
Lorsque tu fais cette commande, le format-wide s'aplique aux indices de la liste plutot qu'aux elements, voilà pourquoi les accolades et $_
Arnaud<br><br>Message édité par: Arnaud, à: 20/09/11 11:54
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
Lorsque tu fais cette commande, le format-wide s'aplique aux indices de la liste plutot qu'aux elements, voilà pourquoi les accolades et $_
Arnaud a raison... Si tu veux absolument utiliser la variable de pipeline '$_' il faut que tu l'utilises sous la forme :
[code:1]
$maliste | Foreach-Object{ Format-Wide $_ -Force -AutoSize }[/code:1]
Mais je ne sais pas si cela répond à ton besoin.
Autre exemple d'utilisation de '$_', mais cette fois-ci avec la Cmdlet 'Where-Object' :
[code:1]Get-Service | Where-Object{$_.status -eq \"Running\" } [/code:1]
Cette commande permet de récupérer tous les services dont le status est 'Démarré'.
@ +
Matthew
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- ArrayList et Format-wide