So heben Sie die Bereitstellung einer virtuellen Festplatte über die Befehlszeile in Windows 10 auf

9

Ich muss eine virtuelle Festplatte mit einem Batch-Skript in Windows 10 aushängen. Die einzige Lösung, die ich online gefunden habe, war an Windows 7 gerichtet und betraf Diskpart. Gibt es andere native Windows-Befehlszeilentools, die diese Aufgabe übernehmen können?

Zerobinary99
quelle
in cmd kann schwierig sein. Ich kenne Powershell nicht, aber Powershell macht so viel. ZB sagen viele Links, dass Powershell das tun kann, was Sie wollen. Virtualizationadmin.com/kbase/VirtualizationTips/… und technet.microsoft.com/en-us/library/hh848562(v=wps .630) .aspx
barlop
@barlop Vielen Dank für Ihren Kommentar und die Links. Der Batch muss auf einem System ausgeführt werden können, auf dem Powershell nicht installiert ist. Ich fürchte, das ist keine Option.
Zerobinary99
Gibt es einen bestimmten Grund, warum Sie diskpart nicht verwenden möchten? Beispielsweise kann es nicht interaktiv ausgeführt werden, sodass Sie eine Batch-Datei haben können, die ein Diskpart-Skript in eine Datei script.txt überträgt, und dann diskpart / s script.txt ausführt. Hier gibt es ein Beispiel für ein Diskpart-Skript technet.microsoft .com / en-us / library / dn614984.aspx
Barlop
@barlop Mir ist die Diskpart-Lösung bekannt und ich verwende sie derzeit auf einem anderen System. Auf dem, auf dem dies funktionieren soll, befindet sich kein Diskpart.
Zerobinary99
Ich denke, es wäre schon schwer genug, einen Drittanbieter zu finden, der dies tut. Native Befehle sind ziemlich bekannt, ich bin sicher, es gibt keine, die dies tun, außer diskpart. Es ist fast ein Wunder, dass Diskpart es tut. (Da diskpart ein so "einfaches" Programm ist, wie es fdisk war, und die Leute es normalerweise verwenden, ohne die Option zu bemerken. Die Idee, dass es einen anderen nativen Befehl gibt, der dies tun würde, ist fast undenkbar. Wenn Sie eine Batch-Datei einfügen können Können Sie dort nicht ein Programm wie Diskpart einfügen?
Barlop

Antworten:

6

Da ich keine Möglichkeit gefunden habe, mich ausschließlich auf von MS installierte Befehlszeilentools zu verlassen, werde ich Lösungen von Drittanbietern auflisten.


WinApiExec

Mit WinApiExec kann der Benutzer die Windows-API über die Befehlszeile aufrufen. Die ausführbare 32-Bit-Datei ist nur 3,5 KB groß (x64: 5,5 KB) und daher lächerlich klein, was so wenig Overhead wie möglich verursacht.

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 unterstützt einige VHD-bezogene Funktionen. Die Größe (x86: 432 KB; x64: 2,53 MB) ist ziemlich groß, um lediglich WinApi aufzurufen. Daher ist es keine Lösung für mein Szenario, kann aber für andere Personen nützlich sein.

vmount detach \\.\PhysicalDriveX

DiskPart

Der Vollständigkeit halber sei auch DiskPart erwähnt. Es unterstützt viele festplattenbezogene Funktionen, hat jedoch eine eher schleppende Vorgehensweise, um die ansonsten erforderlichen Benutzereingaben für Skriptzwecke zu automatisieren. Es ist auch das einzige Tool in der Liste, das in einer Schleife eingeschlossen wird, wenn Sie das Skript versehentlich ohne erhöhte Rechte ausführen.

Speichern Sie die folgenden zwei Zeilen in einer Textdatei:

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

Jetzt kann Dism die Textdatei als unbeaufsichtigte Antwortdatei analysieren:

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

Sie können vhd / vhdx mit nativem Windows 10 Powershell ein- und aushängen:

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

Von cmd / bat:

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

In beiden Fällen müssen Sie die Eingabeaufforderung mit erhöhten Rechten (Als Administrator ausführen) verwenden.

Beachten Sie außerdem, dass Sie zuerst die Hyper-V-Funktion aktivieren müssen .

Anton Krouglov
quelle
Von meinem Kommentar zu meiner Frage: "Der Stapel muss auf einem System ausgeführt werden können, auf dem Powershell nicht installiert ist. Ich fürchte, das ist keine Option."
Zerobinary99
Soweit mir bekannt ist, ist Powershell ein integraler Bestandteil von Windows 10 (Sie haben nach Windows 10 gefragt), sodass Sie es nicht installieren oder deinstallieren können. Die Ausführung kann jedoch auf verschiedene Weise blockiert werden, z. B. durch Gruppenrichtlinien.
Anton Krouglov
Warum hinterfragen Sie die Bedingungen? Es gibt einen Grund für sie. Ich verwende ein Windows Lite ohne Powershell und bin abgeneigt, eine gesamte Plattform
beizubehalten
1
Ich habe das ähnliche Problem. Googeln hat Ihre alte Frage ergeben. Diese Antwort kann also auch für andere hilfreich sein.
Anton Krouglov
Da diese Frage älter als zwei Jahre ist und der Titel in Bezug auf Ihre Anforderung vage ist, hilft diese Antwort vielen anderen Menschen, ebenso wie meine erweiterte Antwort. Sie sollten mehr Stack Exchange Meta lesen, um mehr über die Funktionsweise dieser Site und ihre Richtlinien zu erfahren. Diese Art von Antworten sind sehr nützlich für die Community @ Zerobinary99
FreeSoftwareServers
1

Dies ist eine erweiterte Antwort: (Sie sollten in der Lage sein, Informationen zum Umount von VHD zu erhalten.)

HowTo Automatisches Mounten und Umhängen von VHD-Dateien beim Booten / Herunterfahren.

In Windows 10 scheinen sich die Dinge ein wenig geändert zu haben.

Zunächst sollte ich sagen, dass ich eine auf einem Linux-Dateiserver gespeicherte virtuelle Festplatte einbinde und über SMB einbinde.

Zweitens ist es sehr wichtig, dass, wenn Sie die Festplatte beim Neustart nicht trennen, beim Versuch, sie erneut anzuhängen, "Die Datei wird verwendet und kann nicht darauf zugegriffen werden" angezeigt wird.

Wir brauchen also sowohl Automount als auch Unmount. Das Unmount erwies sich als etwas kniffliger, da ich es nicht einfach in den Startordner legen kann. Sie müssen Gruppenrichtlinien verwenden. Wenn es als "Shutdown / Startup" -Skript ausgeführt wird, wurde es zu früh ausgeführt. Sie müssen es unter "Anmelden / Abmelden" ausführen.

Ich habe 4 Dateien 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

gpedit.mscGeben Sie nun in start t / run ein und fügen Sie die Skripte zur Anmeldung / Abmeldung hinzu

Geben Sie hier die Bildbeschreibung ein

FreeSoftwareServer
quelle
Vielen Dank für die Antwort, aber dies ist keine Lösung für das Problem. Ich suchte nach einer Batch-kompatiblen Lösung, abgesehen von der Verwendung von Diskpart. Sie haben im Grunde nur die gleiche Syntax eingefügt, die bereits in meiner Antwort enthalten ist.
Zerobinary99
Abgesehen von der Verwendung der integrierten Windows-Funktion ohne Verwendung von Tools von Drittanbietern? Scheint oximoronisch.
FreeSoftwareServers
Ich habe nach anderen nativen Windows-Funktionen gefragt . Daran ist nichts Oxymoronisches. Mir scheint, Sie haben allgemeine Verständnisprobleme.
Zerobinary99