Windows Virtual PC does support the use of floppy disks – but as this feature is only used by a small subset of users – we did not expose this in the user interface. To use floppy disks you need to have a script to help you. And here are the scripts:
VBScript:
PowerShell:
VBScript:
Option Explicit' Define constants for floppy drive attachment typesCONST vmFloppyDrive_None = 0CONST vmFloppyDrive_Image = 1CONST vmFloppyDrive_HostDrive = 2Dim namedArguments, argumentError, vpc, vm, vmName, action, floppy, vmFloppyDrive' Check that the script is running at the command line.If UCase(Right(Wscript.FullName, 11)) = "WSCRIPT.EXE" Then
WScript.Echo "This script must be run under CScript."WScript.Quit
End If
' Get the virtual machine name / floppy commands from the command-line argumentsSet namedArguments = WScript.Arguments.NamedargumentError = falseIf namedArguments.Exists("vm") Then
vmName = namedArguments.Item("vm")ElseargumentError = trueEnd If
If namedArguments.Exists("action") Then
action = namedArguments.Item("action")ElseargumentError = trueEnd If
If namedArguments.Exists("floppy") Then
floppy = namedArguments.Item("floppy")ElseIf (not ((action = "info") or (action = "disconnect"))) Then
argumentError = trueEnd If
End If
' Display usage information if wrong arguments are providedif argumentError then
WScript.Echo "Missing command-line argument"WScript.Echo
WScript.Echo "Usage: FloppyDrive.vbs /vm:" & chr(34) & "Name of virtual machine to be started" & chr(34)
WScript.Echo
WScript.Echo " /action:info - to display information about the current floppy configuration"WScript.Echo " disconnect - to disconnect any attached floppy disk or floppy disk image"WScript.Echo " vfd - to attach a virtual floppy disk image"WScript.Echo " physical - to attach a physical floppy disk"WScript.Echo
WScript.Echo " /floppy:name - where name is either the full name and path for a virtual"WScript.Echo " floppy disk or the letter of a physical disk to attach"WScript.Echo
WScript.Quit
end if
' Attempt to connect to Virtual PCOn Error Resume Next
Set vpc = CreateObject("VirtualPC.Application")
If Err.Number <> 0 Then
WScript.Echo "Unable to connect to Virtual PC."WScript.Quit
End if
On Error Goto 0
' Get virtual machine objectSet vm = vpc.FindVirtualMachine(vmName)' Get the floppy driveset vmFloppyDrive = vm.FloppyDrives.item(1)' Perform the specified actionSelect Case action
' Display floppy disk informationcase "info"
wscript.echo "Floppy disk information"wscript.echo "======================="' Different information is needed for each attachment typeselect case vmFloppyDrive.Attachment
case vmFloppyDrive_None wscript.echo "Floppy Attachment : No floppy disk attached"wscript.echo "Drive Number : " & vmFloppyDrive.DriveNumbercase vmFloppyDrive_Image wscript.echo "Floppy Attachment : Floppy disk image attached"wscript.echo "Drive Number : " & vmFloppyDrive.DriveNumberwscript.echo "Image File : " & vmFloppyDrive.ImageFile case vmFloppyDrive_HostDrive wscript.echo "Floppy Attachment : Physical floppy disk attached"wscript.echo "Drive Number : " & vmFloppyDrive.DriveNumberwscript.echo "Host Drive Letter : " & vmFloppyDrive.HostDriveLetter end select
' Disconnect the current floppy diskcase "disconnect"
wscript.echo "Disconnecting the floppy disk."' A different method is used to disconnect a floppy disk image than for a physical disk select case vmFloppyDrive.Attachment
case vmFloppyDrive_Image vmFloppyDrive.ReleaseImage
case vmFloppyDrive_HostDrive vmFloppyDrive.ReleaseHostDrive
end select
' Attach a floppy disk imagecase "vfd"
wscript.echo "Attaching " & floppy & " to the floppy drive."
vmFloppyDrive.AttachImage(floppy)
' Attach a physical floppy diskcase "physical"
wscript.echo "Attaching physical disk " & floppy & ": to the floppy drive."
vmFloppyDrive.AttachHostDrive(floppy)
' Catch invalid actionscase else
wscript.echo "Invalid action provided. Info, disconnect, vfd and physical are valid options."end select
wscript.echo
param([string]$vmName, [string]$action, [string]$floppy)$argumentError = 0
# Check for correct command-line argumentsIf ($vmName -eq "")
{$argumentError = 1}If ($action -eq "")
{$argumentError = 1}If ($floppy -eq "")
{if ((!([string]::Compare($action, "vfd", $True))) -or (!([string]::Compare($action, "physical", $True))))
{$argumentError = 1}}
# Display usage information if wrong arguments are providedIf ($argumentError -eq 1){write-host "Missing command-line argument."write-host "USage: FloppyDrive.ps1 -vmName `"Name of virtual machine`""
write-host " -action info - to display information about the current floppy configuration"write-host " disconnect - to disconnect any attached floppy disk or floppy disk image"write-host " vfd - to attach a virtual floppy disk image"write-host " physical - to attach a physical floppy disk"write-host
write-host " -floppy name - where name is either the full name and path for a virtual"write-host " floppy disk or the letter of a physical disk to attach"exit
}
# Connect to Virtual PC$vpc=new-object –com VirtualPC.Application –Strict
# Get virtual machine object$vm = $vpc.FindVirtualMachine($vmName)
# Get the floppy drive$vmFloppyDrive = $vm.FloppyDrives.item(1)
# Perform the specified actionswitch ($action) {# Display floppy disk information"info" {write-host "Floppy disk information"write-host "======================="# Different information is needed for each attachment typeswitch ($vmFloppyDrive.Attachment){0 {write-host "Floppy Attachment : No floppy disk attached"write-host "Drive Number : " $vmFloppyDrive.DriveNumber}1 { write-host "Floppy Attachment : Floppy disk image attached"write-host "Drive Number : " $vmFloppyDrive.DriveNumberwrite-host "Image File : " $vmFloppyDrive.ImageFile }2 { write-host "Floppy Attachment : Physical floppy disk attached"write-host "Drive Number : " $vmFloppyDrive.DriveNumberwrite-host "Host Drive Letter : " $vmFloppyDrive.HostDriveLetter }}
}
# Disconnect the current floppy disk"disconnect" {write-host "Disconnecting the floppy disk."# A different method is used to disconnect a floppy disk image than for a physical disk switch ($vmFloppyDrive.Attachment){1 {$vmFloppyDrive.ReleaseImage()}2 {$vmFloppyDrive.ReleaseHostDrive()}}
}
# Attach a floppy disk image"vfd" {write-host "Attaching " $floppy " to the floppy drive."
$vmFloppyDrive.AttachImage($floppy)
}
# Attach a physical floppy disk"physical" {write-host "Attaching physical disk " $floppy ": to the floppy drive."
$vmFloppyDrive.AttachHostDrive($floppy)
}
# Catch invalid actionsdefault {write-host "Invalid action provided. Info, disconnect, vfd and physical are valid options."}
}
No comments:
Post a Comment