Tobias Simetsreiter 4 anni fa
parent
commit
9733b69441

+ 4 - 15
WinImager/LibWinImager.psm1

@@ -1,6 +1,7 @@
 
 Add-Type -AssemblyName "System.Windows.Forms"
 
+Import-Module -Name ($PSScriptRoot + "/lib/forms.psm1")
 $PSScriptRoot |Out-Host
 
 Function BecomeAdmin($script){
@@ -18,17 +19,6 @@ Function LogFilePath($name){
     [System.IO.Path]::Combine($PSScriptRoot, "log", $logfilename)
 }
 
-Function GuiMessageBox
-{
-    param(
-        $text,
-        $title = "Continue",
-        $buttons = "YesNo",
-        $level = "Info"
-    )
-    [System.Windows.Forms.MessageBox]::Show($text, $title, $buttons, $level)
-}
-
 Function WinDD($inFileName, $outFileName, $bs = 5Mb, $create = $false) {
 
     Write-Output ""
@@ -96,7 +86,7 @@ Function WinDD($inFileName, $outFileName, $bs = 5Mb, $create = $false) {
 
 } #end function WinDD
 
-Function Reset-Disk($disknum)
+Function Reset-Disk($disknum, $parttabletype="MBR")
 {
     $ErrorActionPreference = "Stop"
     
@@ -108,10 +98,10 @@ list disk
 select disk $disknum
 list partition
 clean
+convert $parttabletype
+create partition primary
 "@  | diskpart
 
-    Write-Output "Sleeping 10s to make sure drive is available..."
-    sleep 10
 }
 
 Function FixCHS($disknum){
@@ -292,4 +282,3 @@ function Hide-Console
     [Console.Window]::ShowWindow($consolePtr, 0)
 }
 
-Export-ModuleMember -Function *

+ 9 - 9
WinImager/bin/ImageToVDI.ps1

@@ -14,28 +14,28 @@ Function Main()
     
     "Select Image File..."
     
-    $filename = GuiOpenFileName
+    $infilename = GuiOpenFileName
 
-    if (($filename -eq $null) -or ($filename -eq "")){
-        "No Image Selected"
+    if (($infilename -eq $null) -or ($infilename -eq "")){
+        "No source file elected"
         Break
     }
 
     "Select VDI File..."
-    $vdiname = GuiSaveFileName -filter "Virtualbox Images (*.vdi)| *.vdi"
+    $outfilename = GuiSaveFileName -filter "Virtualbox Images (*.vdi)| *.vdi"
 
-    if (($vdiname -eq $null) -or ($vdiname -eq "")){
+    if (($outfilename -eq $null) -or ($outfilename -eq "")){
         "No Target Selected"
         Break
     }
 
-    if (Test-Path $vdiname -PathType Leaf) {
-        Remove-Item $vdiname
+    if (Test-Path $outfilename -PathType Leaf) {
+        Remove-Item $outfilename
     }
 
-    &$VBOXMANAGE convertfromraw $filename $vdiname --format VDI
+    &$VBOXMANAGE convertfromraw $infilename $outfilename --format VDI
 
-    if($LASTEXITCODE -ne 0){
+    if($LASTEXITCODE -eq 0){
         GuiMessageBox "Success" -Buttons "Ok"
     } else {
         GuiMessageBox "Error" -Buttons "Ok"

+ 21 - 12
WinImager/bin/ResetDisk.ps1

@@ -15,15 +15,23 @@ Function Main()
         Write-Output "No Disk Selected"
     } else {
 
+        $dia = GuiSelectDialog (@("MBR","GPT")) -Title "Select Partition Table Type" -Label "Select Partition Table Type"
+        $result = $dia.form.ShowDialog()
+
+        if ($result -eq "OK"){
+            $parttabletype = $dia.listbox.selecteditem
+            "Selected: ${parttabletype}"
+        } else {
+            "Abort"
+            Break
+        }
         $dialog = @"
-Going to write Image:
-
-"${filename}"
-
-to Drive:
+Going to Reset Disk:
 
 "${diskname} ${diskserial}" 
 
+To a single empty ${parttabletype} Partition
+
 Would you like to contine?
 "@ 
         $dialog
@@ -32,14 +40,15 @@ Would you like to contine?
 
         if ($continue -eq "Yes"){
 
-            Reset-Disk $disknum
+            Reset-Disk $disknum $parttabletype
+
+            if($LASTEXITCODE -eq 0){
+                GuiMessageBox "Success" -Buttons "Ok"
+            } else {
+                GuiMessageBox "Error" -Buttons "Ok"
+            }
         }
     }
 }
 
-try{
-    Main | Tee-Object -FilePath $logpath
-} catch {
-    Write-Error $_.Exception | Tee-Object -FilePath $logpath -Append
-    pause
-}
+Main

+ 24 - 0
WinImager/lib/forms.psm1

@@ -0,0 +1,24 @@
+
+class Forms {
+    [string]$Brand
+     static [void]GuiMessageBox(
+        $text,
+        $title = "Continue",
+        $buttons = "YesNo",
+        $level = "Info"){
+
+        [System.Windows.Forms.MessageBox]::Show($text, $title, $buttons, $level)
+     }
+}
+
+Function GuiMessageBox
+{
+    param(
+        $text,
+        $title = "Continue",
+        $buttons = "YesNo",
+        $level = "Info"
+    )
+    [System.Windows.Forms.MessageBox]::Show($text, $title, $buttons, $level)
+}
+