0
votes

Comment puis-je obtenir seulement une partie sur la corde

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? XXX


4 commentaires

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


3 Réponses :


0
votes

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(" ", "") }


3 commentaires

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 et dites-moi le "typename" en haut de la liste?


Typename: System.Object []



0
votes

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 :) xxx

sortie:

Win10_vm1
win2019


3 commentaires

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.



0
votes

Pour implémenter une solution de regex, vous pouvez utiliser -replace--replace code> ou Select-String code>.


Utilisation de Select-String : FORT> P>

$vms -replace '^"([^"]+)".*','$1'


0 commentaires