最近对操作系统挺有兴趣的,实验了一下!准备找一个虚拟机,之前在xp上使用virtual pc感觉不错,准备在本机上装一下,但是发现居然不支持软盘了!

查阅了各种资料,终于找到了解决的办法。

 

1. 下载脚本 Scripts.zip 在如下地址:http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/10/01/using-floppy-disks-with-windows-virtual-pc.aspx

  也可以自己生成两个脚本文件,代码如下

  FloppyDrive.vbs  

Option Explicit

' Define constants for floppy drive attachment types
CONST vmFloppyDrive_None = 0
CONST vmFloppyDrive_Image = 1
CONST vmFloppyDrive_HostDrive = 2

Dim 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 arguments
Set namedArguments = WScript.Arguments.Named

argumentError = false

If namedArguments.Exists("vm") Then
 vmName = namedArguments.Item("vm")
Else
 argumentError = true
End If

If namedArguments.Exists("action") Then
 action = namedArguments.Item("action")
Else
 argumentError = true
End If

If namedArguments.Exists("floppy") Then
 floppy = namedArguments.Item("floppy")
Else
 If (not ((action = "info") or (action = "disconnect"))) Then
  argumentError = true
 End If
End If

' Display usage information if wrong arguments are provided
if 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 PC
On 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 object
Set vm = vpc.FindVirtualMachine(vmName)

' Get the floppy drive
set vmFloppyDrive = vm.FloppyDrives.item(1)

' Perform the specified action
Select Case action

 ' Display floppy disk information
 case "info"
  wscript.echo "Floppy disk information"
  wscript.echo "======================="

  ' Different information is needed for each attachment type
  select case vmFloppyDrive.Attachment
   case vmFloppyDrive_None 
    wscript.echo "Floppy Attachment : No floppy disk attached"
    wscript.echo "Drive Number      : " & vmFloppyDrive.DriveNumber
   case vmFloppyDrive_Image 
    wscript.echo "Floppy Attachment : Floppy disk image attached"
    wscript.echo "Drive Number      : " & vmFloppyDrive.DriveNumber
    wscript.echo "Image File        : " & vmFloppyDrive.ImageFile 
   case vmFloppyDrive_HostDrive 
    wscript.echo "Floppy Attachment : Physical floppy disk attached"
    wscript.echo "Drive Number      : " & vmFloppyDrive.DriveNumber
    wscript.echo "Host Drive Letter : " & vmFloppyDrive.HostDriveLetter 
  end select

 ' Disconnect the current floppy disk
 case "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 image
 case "vfd"

  wscript.echo "Attaching " & floppy & " to the floppy drive."
  vmFloppyDrive.AttachImage(floppy)

 ' Attach a physical floppy disk
 case "physical"

  wscript.echo "Attaching physical disk " & floppy & ": to the floppy drive."
  vmFloppyDrive.AttachHostDrive(floppy)

 ' Catch invalid actions
 case else
  wscript.echo "Invalid action provided. Info, disconnect, vfd and physical are valid options."

end select

wscript.echo

  FloppyDrive.ps1

param([string]$vmName, [string]$action, [string]$floppy)

$argumentError = 0

# Check for correct command-line arguments
If ($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 provided
If ($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 朿om VirtualPC.Application 朣trict

# Get virtual machine object
$vm = $vpc.FindVirtualMachine($vmName)

# Get the floppy drive
$vmFloppyDrive = $vm.FloppyDrives.item(1)

# Perform the specified action
switch ($action) 
   {

   # Display floppy disk information
   "info" {
      write-host "Floppy disk information"
      write-host "======================="

      # Different information is needed for each attachment type
      switch ($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.DriveNumber
           write-host "Image File        : " $vmFloppyDrive.ImageFile }
        2 { 
           write-host "Floppy Attachment : Physical floppy disk attached"
           write-host "Drive Number      : " $vmFloppyDrive.DriveNumber
           write-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 actions
   default {write-host "Invalid action provided. Info, disconnect, vfd and physical are valid options."}
   }

 

2. 将两个脚本文件放置在同一个目录下

3. 打开命令行,进入存放脚本文件的目录

4. 运行如下的命令:

  cscript FloppyDrive.vbs /vm:"myTestOS" /action:vfd /floppy:"C:\E\work\VirtualPC\helloos.vfd"

  红色字体部分分别是虚拟机的名字,虚拟软盘的文件(必须是vfd后缀,可以吧img文件改为vfd文件)

posted on 2014-01-18 17:51  虎头工作室  阅读(1009)  评论(0编辑  收藏  举报