Come smontare un disco rigido virtuale tramite riga di comando in Windows 10


9

Devo smontare un disco rigido virtuale con uno script batch in Windows 10. L'unica soluzione che ho trovato online era diretta su Windows 7 e riguardava Diskpart. Sono disponibili altri strumenti nativi della riga di comando di Windows che possono fare il lavoro?


in cmd può essere complicato. Non conosco PowerShell, ma PowerShell fa così tanto. Ad esempio, molti link dicono che PowerShell può fare quello che vuoi virtualizationadmin.com/kbase/VirtualizationTips/… e technet.microsoft.com/en-us/library/hh848562(v=wps .630) .aspx
barlop

@barlop Grazie per il tuo commento e i link. Il batch deve essere in grado di funzionare su un sistema in cui Powershell non è installato, quindi temo che non sia un'opzione.
Zerobinary99

c'è qualche motivo particolare per cui non vuoi usare diskpart? ad es. può essere eseguito in modo non interattivo, quindi potresti avere un file batch che riecheggia uno script diskpart in un file script.txt, quindi diskpart / s script.txt c'è un esempio di script diskpart qui technet.microsoft .com / it-it / library / dn614984.aspx
barlop

@barlop Sono a conoscenza della soluzione diskpart e la sto attualmente utilizzando su un altro sistema. Quello su cui questo dovrebbe funzionare non ha diskpart su di esso.
Zerobinary99

Penso che sarebbe abbastanza difficile persino trovarne uno di terze parti. I comandi nativi sono abbastanza conosciuti, sono sicuro che non ce ne sono altri che fanno parte del diskpart. È quasi un miracolo che diskpart lo faccia. (dal momento che diskpart è un programma "semplice" piuttosto come lo era fdisk, e la gente tende a usarlo senza notare l'opzione. L'idea che ci sia un altro comando nativo che lo farebbe, è quasi impensabile. Se puoi mettere un file batch lì, non puoi mettere un programma come diskpart?
barlop

Risposte:


6

Dal momento che non ho trovato il modo di fare affidamento esclusivamente sugli strumenti della riga di comando installati da MS, elencherò le soluzioni di terze parti.


WinApiExec

WinApiExec consente all'utente di chiamare l'API di Windows dalla riga di comando. L'eseguibile a 32 bit ha una dimensione di soli 3,5 KB (x64: 5,5 KB) e quindi ridicolmente piccolo, introducendo il minor overhead possibile.

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 supporta alcune funzioni relative al VHD. Le sue dimensioni (x86: 432KB; x64: 2.53MB) sono piuttosto grandi per la semplice chiamata a WinApi, quindi non è una soluzione per il mio scenario, ma potrebbe essere utile per altre persone.

vmount detach \\.\PhysicalDriveX

DiskPart

Per completezza, anche DiskPart deve essere menzionato. Supporta molte funzionalità relative al disco, ma ha un modo piuttosto lento di farlo per automatizzare l'input dell'utente altrimenti necessario a scopi di script. È anche l'unico strumento nell'elenco che verrà bloccato in un ciclo se si esegue accidentalmente lo script senza diritti elevati.

Salvare le seguenti due righe in un file di testo:

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

Ora, Dism può analizzare il file di testo come una forma di file di risposta automatica:

DISKPART /s C:\Path_to\Name_Of_Textfile.txt

3

Puoi montare e smontare vhd / vhdx usando Windows 10 Powershell nativo:

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

Da cmd / bat:

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

In entrambi i casi è necessario utilizzare il prompt elevato (Esegui come amministratore).

Un'altra cosa da notare è che devi prima abilitare la funzione Hyper-V .


Dal mio commento alla mia domanda: "Il batch deve essere in grado di funzionare su un sistema in cui Powershell non è installato, quindi temo che non sia un'opzione".
Zerobinary99

Per quanto ne so, Powershell è parte integrante di Windows 10 (hai chiesto informazioni su Windows 10), quindi non puoi installarlo o disinstallarlo. Tuttavia, la sua esecuzione può essere bloccata in vari modi, come Criteri di gruppo.
Anton Krouglov,

Perché stai mettendo in dubbio le condizioni? C'è una ragione per loro. Sto usando un Windows Lite senza Powershell e sono contrario a mantenere un'intera piattaforma di cui non ho bisogno se ci sono più opzioni leggere disponibili
Zerobinary99

1
Ho lo stesso problema. Google ha prodotto la tua vecchia domanda. Quindi questa risposta può essere utile anche ad altre persone.
Anton Krouglov,

Poiché questa domanda ha più di due anni e il titolo è vago per quanto riguarda le tue esigenze, questa risposta aiuta molte altre persone così come la mia risposta estesa. Dovresti leggere più Meta di scambio di stack per saperne di più su come funziona questo sito e le sue politiche. Questo tipo di risposte sono molto utili per la community @ Zerobinary99
FreeSoftwareServers

1

Questa è una risposta estesa: (Dovresti essere in grado di spigolare come smontare VHD)

Come montare e smontare automaticamente i file VHD all'avvio / spegnimento.

Le cose sembrano essere leggermente cambiate in Windows 10.

Innanzitutto, dovrei dire che sto montando un disco rigido virtuale archiviato su un file server Linux, installandolo su SMB.

In secondo luogo, molto importante, è che se non si stacca il disco al riavvio, quando si tenta di ricollegarlo, si dice "Il file è in uso e non è possibile accedervi".

Quindi abbiamo bisogno sia di automount che di smontaggio. Lo smontaggio si è rivelato un po 'più complicato, dal momento che non posso semplicemente inserirlo nella cartella di avvio. Devi usare Criteri di gruppo. Inoltre, quando eseguito come uno script "shutdown / startup", è stato eseguito in anticipo, è necessario eseguirlo in "Accesso / Disconnessione"

Ho 4 file in 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

A questo punto, digitare / eseguire gpedit.msce aggiungere gli script per accedere / disconnettersi

inserisci qui la descrizione dell'immagine


Grazie per la risposta, ma questa non è una soluzione al problema. Stavo cercando una soluzione compatibile con il batch oltre a utilizzare Diskpart. Fondamentalmente hai appena incollato la stessa sintassi che è già nella mia risposta.
Zerobinary99,

Oltre a utilizzare la funzione integrata di Windows senza utilizzare strumenti di terze parti? Sembra ossimoronico.
FreeSoftwareServers il

Stavo chiedendo altre funzioni native di Windows. Non c'è nulla di ossimoro in questo. Mi sembra che tu abbia problemi di comprensione generale.
Zerobinary99,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.