Comment démonter un disque dur virtuel via la ligne de commande dans Windows 10

9

Je dois démonter un disque dur virtuel avec un script batch dans Windows 10. La seule solution que j'ai trouvée en ligne était dirigée vers Windows 7 et impliquait Diskpart. Existe-t-il d'autres outils de ligne de commande Windows natifs qui peuvent faire le travail?

Zerobinary99
la source
en cmd peut être délicat. Je ne connais pas powershell mais powershell en fait tellement. Par exemple, de nombreux liens disent que powershell peut faire ce que vous voulez virtualizationadmin.com/kbase/VirtualizationTips/… et technet.microsoft.com/en-us/library/hh848562(v=wps .630) .aspx
barlop
@barlop Merci pour votre commentaire et les liens. Le lot doit pouvoir fonctionner sur un système où Powershell n'est pas installé, donc je crains que ce ne soit pas une option.
Zerobinary99
y a-t-il une raison particulière pour laquelle vous ne souhaitez pas utiliser diskpart? par exemple, il peut s'exécuter de manière non interactive, vous pouvez donc avoir un fichier batch qui renvoie un script diskpart dans un fichier script.txt, puis fait diskpart / s script.txt il y a un exemple de script diskpart
barlop
@barlop Je connais la solution diskpart et je l'utilise actuellement sur un autre système. Celui sur lequel cela est censé fonctionner n'a aucun élément de disque.
Zerobinary99
Je pense que ce serait déjà assez difficile de trouver un tiers qui le fasse. Les commandes natives sont assez bien connues, je suis sûr qu'il n'y en a pas d'autre que diskpart. C'est presque un miracle que diskpart le fasse. (puisque diskpart est un programme "simple" un peu comme fdisk, et les gens ont tendance à l'utiliser sans remarquer l'option. L'idée qu'il existe une autre commande native qui le ferait, est presque impensable. Si vous pouvez mettre un fichier batch là-bas, ne pouvez-vous pas mettre un programme comme diskpart là-bas?
barlop

Réponses:

6

Comme je n'ai pas trouvé de moyen de compter uniquement sur les outils de ligne de commande installés par MS, je vais répertorier les solutions tierces.


WinApiExec

WinApiExec permet à l'utilisateur d'appeler l'API Windows à partir de la ligne de commande. L'exécutable 32 bits ne fait que 3,5 Ko (x64: 5,5 Ko) et est donc ridiculement petit, introduisant le moins de surcharge possible.

winapiexec.exe virtdisk.dll@OpenVirtualDisk $a:2,0 "C:\Example Path\Test.vhd" 262144 0 0 $b:4 , virtdisk.dll@DetachVirtualDisk $$:7@0 0 0

vMount

vMount prend en charge plusieurs fonctions liées aux disques durs virtuels . Sa taille (x86: 432 Ko; x64: 2,53 Mo) est assez énorme pour appeler simplement WinApi, donc ce n'est pas une solution pour mon scénario, mais pourrait être utile à d'autres personnes.

vmount detach \\.\PhysicalDriveX

DiskPart

Par souci d'exhaustivité, DiskPart doit également être mentionné. Il prend en charge de nombreuses fonctionnalités liées au disque, mais a une manière plutôt lente de procéder pour automatiser les entrées utilisateur autrement nécessaires à des fins de script. C'est également le seul outil de la liste qui sera piégé dans une boucle si vous exécutez accidentellement le script sans droits élevés.

Enregistrez les deux lignes suivantes dans un fichier texte:

vdisk file="C:\Example Path\Test.vhd"
detach vdisk

Désormais, Dism peut analyser le fichier texte sous la forme d'un fichier de réponses sans assistance:

DISKPART /s C:\Path_to\Name_Of_Textfile.txt
Zerobinary99
la source
3

Vous pouvez monter et démonter vhd / vhdx à l'aide de Windows 10 Powershell natif:

Import-module hyper-v
Dismount-VHD -Path 'c:\my.vhd'

De cmd / bat:

powershell -command "Import-module hyper-v; Dismount-VHD -Path 'c:\my.vhd'"

Dans les deux cas, vous devez utiliser une invite élevée (Exécuter en tant qu'administrateur).

Une autre chose à noter est que vous devez d'abord activer la fonction Hyper-V .

Anton Krouglov
la source
De mon commentaire à ma question: "Le lot doit pouvoir fonctionner sur un système où Powershell n'est pas installé, donc je crains que ce ne soit pas une option."
Zerobinary99
Pour autant que je sache, Powershell fait partie intégrante de Windows 10 (vous avez posé des questions sur Windows 10), vous ne pouvez donc pas l' installer ou le désinstaller. Cependant, son exécution peut être bloquée par divers moyens, comme la stratégie de groupe.
Anton Krouglov
Pourquoi remettez-vous en question les conditions? Il y a une raison pour eux. J'utilise Windows Lite sans Powershell et je suis opposé à garder une plate-forme entière dont je n'ai pas besoin s'il y a plus d'options légères disponibles
Zerobinary99
1
J'ai le même problème. Googler a donné votre ancienne question. Cette réponse peut donc également être utile à d'autres personnes.
Anton Krouglov
Étant donné que cette question a plus de deux ans et que le titre est vague concernant votre exigence, cette réponse aide beaucoup d'autres personnes, tout comme ma réponse élargie. Vous devriez lire plus Meta exchange stack pour en savoir plus sur le fonctionnement de ce site et ses politiques. Ce type de réponses est très utile pour la communauté @ Zerobinary99
FreeSoftwareServers
1

Ceci est une réponse étendue: (Vous devriez pouvoir glaner comment démonter le disque dur virtuel)

Comment monter et démonter automatiquement les fichiers VHD au démarrage / à l'arrêt.

Les choses semblent avoir un peu changé dans Windows 10.

Tout d'abord, je dois dire que je monte un VHD stocké sur un serveur de fichiers Linux, monté sur SMB.

Deuxièmement, très important, c'est que si vous ne détachez pas le disque au redémarrage, alors lorsque vous essayez de le rattacher, il dit "Le fichier est en cours d'utilisation et n'est pas accessible".

Nous avons donc besoin à la fois de montage automatique et de démontage. Le démontage s'est révélé un peu plus délicat, car je ne peux pas le mettre dans le dossier de démarrage. Vous devez utiliser la stratégie de groupe. En outre, lorsqu'il est exécuté en tant que script "arrêt / démarrage", il s'est exécuté trop tôt, vous devez l'exécuter à "Ouverture / fermeture de session"

J'ai 4 fichiers dans C:\mount

mount.cmd

@ECHO OFF

DISKPART /s C:\mount\mount.txt

umount.cmd

@ECHO OFF

DISKPART /s C:\mount\umount.txt

umount.txt

select vdisk file="\\192.168.1.255\Blizzard.vhdx"
detach vdisk

mount.txt

select vdisk file="\\192.168.1.255\Blizzard.vhdx"
attach vdisk

Maintenant, dans start, tapez / run gpedit.mscet ajoutez les scripts à la connexion / déconnexion

entrez la description de l'image ici

FreeSoftwareServers
la source
Merci pour la réponse, mais ce n'est pas une solution au problème. Je cherchais une solution compatible batch en plus d'utiliser Diskpart. En gros, vous venez de coller la même syntaxe que celle déjà présente dans ma réponse.
Zerobinary99
Mis à part l'utilisation de la fonction Windows intégrée sans utiliser d'outils tiers? Semble oxymoronique.
FreeSoftwareServers
Je demandais d' autres fonctions natives de Windows. Il n'y a rien d'oxymoronique là-dedans. Il me semble que vous avez des problèmes de compréhension générale.
Zerobinary99