$vmName = "Windows XP Mode" # 対象の下層マシン名 $devName = "USB Mass Storage Device" # アタッチしたいUSBデバイス名 $vpc = new-object -com VirtualPC.Application $vm = $vpc.VirtualMachines # 仮想マシン一覧出力 $vm | Format-Table Name, Memory, State -auto $vm = $vpc.FindVirtualMachine($vmName) #Out-Default -InputObject $vm.State if($vm.State -eq 1) { # シャットダウン中→起動する Out-Default -InputObject "ゲストOSを起動しています…" $vm.Startup() do { #起動するまで待つ Start-Sleep -seconds 1 } while($vm.State -ne 5) } elseif ($vm.State -eq 2) { # 休止状態→起動する Out-Default -InputObject "ゲストOSを休止状態から復帰しています…" $vm.Startup() do { #起動するまで待つ Start-Sleep -seconds 1 } while($vm.State -ne 5) } elseif ($vm.State -eq 5) { # すでに起動中 $msg = $vm.Name, " はすでに起動しています。" -join $msg } $usbDev = $vpc.USBDeviceCollection foreach ($usb in $usbDev) { # $vm.DetachUSBDevice($usb) # Out-Default -InputObject ($usb.AttachedToVM -eq $null) if (($usb.DeviceString -eq $devName) -and ($usb.AttachedToVM -eq $null)) { $vm.AttachUSBDevice($usb) $msg = $null $msg = $usb.DeviceString, "を仮想OSにアタッチしました。" -join $msg } } # 接続されているUSBデバイス一覧表示 $usbDev | Format-Table -auto | out-string