This may help someone.
assuming you have a ramdrive on x: with diskpart... i use autoit. you could possibly replace the x: path with @WindowsDir & "system32diskpart.exe"
#RequireAdmin
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("WinWaitDelay",100)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
#Region ### START Koda GUI section ### Form=Form1_1.kxf
$Form1_1 = GUICreate("VHD Panel", 248, 146, 228, 164)
$Button1 = GUICtrlCreateButton("Mount VHD", 8, 16, 107, 25)
$Button2 = GUICtrlCreateButton("UNmount VHD", 128, 16, 107, 25)
$Button3 = GUICtrlCreateButton("Create blank VHD", 8, 56, 107, 25)
$Button4 = GUICtrlCreateButton("Disk Management", 8, 96, 227, 25)
$Button5 = GUICtrlCreateButton("Diskpart CMD", 128, 56, 107, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1) ; This disables 32bit applications from being redirected to syswow64 instead of system32 by default ;
If not IsAdmin() Then; This enables cmd to run as admin
RunAs($user, $domain, $pass,0,@ScriptName,@ScriptDir)
Endif
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1 ;Mount VHD
;GUICtrlSetState($SourceVHD, $GUI_ENABLE)
$SourceVHD = FileOpenDialog("Source VHD file", "c:", "VHD files (*.vhd)", 16)
Opt("WinWaitDelay", 100)
Run("X:Windowssystem32diskpart.exe")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("Select{SPACE}vdisk{SPACE}file=" & $SourceVHD & "{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("Attach{SPACE}vdisk{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("list{SPACE}partition{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("select{SPACE}partition{SPACE}1{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("assign{SPACE}letter=W{ENTER}")
Case $Button2 ;UNmount VHD
$SourceVHD = FileOpenDialog("Source VHD file", "c:", "VHD files (*.vhd)", 16)
Opt("WinWaitDelay", 100)
Run("X:Windowssystem32diskpart.exe")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("Select{SPACE}vdisk{SPACE}file=" & $SourceVHD & "{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("Detach{SPACE}vdisk{ENTER}")
Case $Button3 ;Create blank VHD
$TargetVHD = FileSaveDialog("Target VHD file", "c:", "name it Win.vhd (*.VHD)", 16)
If Not @error Then
If StringInStr($TargetVHD, "*.vhd") = 0 Then
$TargetVHD = $TargetVHD & ".vhd"
EndIf
EndIf
Opt("WinWaitDelay", 100)
; Diskpart create
Run("X:Windowssystem32diskpart.exe")
WinWaitActive("X:Windowssystem32diskpart.exe")
Send("create{SPACE}vdisk{SPACE}file=" & $TargetVHD & "{SPACE}maximum=16000{SPACE}type=fixed{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("select{SPACE}vdisk{SPACE}file=" & $TargetVHD & "{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("attach{SPACE}vdisk{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("create{SPACE}partition{SPACE}primary{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("assign{SPACE}letter=W{ENTER}")
WinWaitActive("X:Windowssystem32diskpart.exe", "")
Send("format{SPACE}quick{SPACE}label=vhd{ENTER}")
Case $Button4 ;Disk Management
Run('mmc.exe diskmgmt.msc')
Case $Button5 ;Diskpart CMD
Run(@WindowsDir & "system32diskpart.exe")
EndSwitch
WEnd