Comment obtenir la sortie d'une commande powershell dans un tableau
J'essaie d'obtenir la sortie d'une commande powershell dans un tableau, mais il semble ne pas fonctionner. En fait je veux l'adresse de la sortie avec une ligne et une colonne d'index.
par exemple,
$a=Get-Service
À la production (en partie)
Status Name DisplayName
------ ---- -----------
Stopped AeLookupSvc Application Experience
Stopped ALG Application Layer Gateway Service
Stopped AppIDSvc Application Identity
Running Appinfo Application Information
Stopped AppMgmt Application Management
Je veux l'adresse de la deuxième ligne de l'Affichage, par exemple
$a[2][2]
Et il doit donner ensuite
Application Layer Gateway Service
Mais cela ne semble pas fonctionner.
Quelqu'un peut-il aider?
Vous devez vous connecter pour publier un commentaire.
Ce type de question me fait penser que vous êtes probablement en provenance d'un Unix à l'arrière-plan, et sont habitués à avoir à traiter avec indicies et un index de colonne, ce genre de chose.
Fondamentalement, PowerShell est un langage de script orienté objet. Vous n'avez simplement pas besoin de faire ce que vous demandez ici.
Par exemple, si vous voulez capturer les résultats, puis saisir une propriété de l'un des objets, voici comment c'est fait.
Tout d'abord, la capture de la sortie.
Maintenant, vous voulez une propriété particulière d'une entité particulière. Pour l'obtenir, l'indice de l'objet que vous voulez.
Pour sélectionner le
.DisplayName
, tout ce que vous avez à faire est d'ajouter à la fin de votre commande précédente.Si vous voulez sélectionner plusieurs valeurs, vous pouvez utiliser cette approche à la place.
Ce n'est pas possible sans un mappage de noms de propriété d'indices de tableau. Notez que ce que vous voyez dans la sortie est juste une liste partielle des propriétés (défini dans un fichier XML quelque part). Donc il n'y a même pas un moyen facile de convertir indices de tableau.
Cependant, je ne comprends pas très bien votre besoin ici. Vous pouvez obtenir le deuxième service avec
$a[1]
, comme prévu. Et ensuite, vous pouvez obtenir sonDisplayName
la valeur de la propriété avec$a[1].DisplayName
. PowerShell utilise des objets de tout. Il n'y a pas besoin de revenir à un texte ou d'analyse cryptique colonne indices juste pour obtenir vos données. Il y a un moyen plus facile.La sortie de
Get-Service
que vous voyez dans la Console peut ressembler à un tableau (comme il est formaté comme un tableau lorsqu'il est envoyé à la Console), mais il est en fait un Système.ServiceProcess.ServiceController' objet.Plutôt que d'utiliser de ligne et de colonne désignations, vous devez utiliser le nom de la propriété pour le récupérer, donc, pour votre exemple:
$a[2].DisplayName
sera de retourApplication Layer Gateway Service