Nous voulons mettre en pause une machine virtuelle dans Oracle VirtualBox lorsqu'il est utilisé sur le réseau interne et lorsque nous répertorions les VMS, je reçois la sortie ci-dessous, mais pour mettre en pause la machine virtuelle que je n'ai besoin que des noms VM car les gens vont créer Leurs propres VMs ne peuvent donc pas les nommer spécifiquement. Le problème est que mes compétences PowerShell ne sont pas si géniales et lorsque j'essaie d'utiliser Split ou Remplacer, je fonctionne à une erreur sur l'espace sur les supports courbés et ce que je veux terminer avec le nom VM Win10_vm1 mais comment Obtenez cela?
3 Réponses :
PowerShell expose l'ensemble de l'environnement .NET. Vous pouvez donc utiliser Sytem.string .Substring () méthode.
& "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" | ForEach-Object { $_.Substring(0, $_.IndexOf("{")).Replace(" ", "") }
Voici comment je les énumère PS C: \ TEMP> & "C: \ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe" Liste des VMS "Win10_VM1" {BD9E16DC-1A1A-4340-AED2-AF3B72F25C4F} "Win2019" {20fb95CB- 2FB3-48F8-A69D-A1E00CA014B5}
Pouvez-vous s'il vous plaît essayer ps c: \ temp> $ vms = & "c: \ fichiers de programme \ oracle \ virtualbox \ vboxmanage.exe"; Get-Member -1putObject $ vms code> et dites-moi le "typename" en haut de la liste?
Typename: System.Object []
Merci PIM pour me faire remarquer dans la bonne direction. Maintenant, j'ai obtenu la sortie des noms VM avec les commandes ci-dessous, je peux maintenant travailler à l'étape suivante du script :) sortie: p>
Considérant que ma réponse vous mène à une solution. Il est considéré comme une étiquette appropriée sur le site pour suggérer une modification et accepter ma réponse. Poster votre propre réponse, qui est une dérivée de 98% de la mine n'est pas considérée comme appropriée.
Désolé PIM pour la première fois ici et n'essayez pas de prendre du crédit de votre travail. J'ai poussé une coche verte sur votre réponse est que ce que vous vouliez que je fasse? Encore merci beaucoup pour l'aide
Ce n'est pas un problème. J'apprécie vos commentaires.
Pour implémenter une solution de regex, vous pouvez utiliser -replace--replace code> ou
Select-String code>.
Select-String : FORT> P>
$vms -replace '^"([^"]+)".*','$1'
Veuillez modifier la question pour ajouter le code que vous avez essayé, puis nous pouvons vous montrer comment le réparer.
Pouvez-vous montrer le code que vous avez tenté cela avec, pouvez-vous nous montrer votre sortie actuelle et votre sortie attendue?
D'où vient cette production?
Je viens d'exécuter "vboxmanage.exe" liste vms "à partir du dossier VirtualBox, mais je n'ai besoin que du nom VM au lieu de la SID