2011-10-15 31 views
0

當我運行在編輯器中的代碼它完美的作品: (不是單一錯誤)Powershell代碼在編輯器中工作,但不在Powershell cmd中它自己?

$vm = 0 
$vpc=new-object –com VirtualPC.Application –Strict 
foreach ($vm in $vpc.VirtualMachines){} 
$broken = Get-WmiObject Win32_PnPEntity | where {$_.ConfigManagerErrorCode -ne 0} 
$usbDevice = $vpc.USBDeviceCollection | ? {$_.DeviceString -eq $usb} | select -first 1 
$vm.AttachUSBDevice($usbDevice) 

當我把這個代碼與一個線;結尾:

$vm = 0; $vpc=new-object –com VirtualPC.Application –Strict; foreach ($vm in $vpc.VirtualMachines){}; $broken = Get-WmiObject Win32_PnPEntity | where {$_.ConfigManagerErrorCode -ne 0}; $usbDevice = $vpc.USBDeviceCollection | ? {$_.DeviceString -eq $usb} | select -first 1; $vm.AttachUSBDevice($usbDevice) 

它給我的0×80020005錯誤:

Exception calling "AttachUSBDevice" with "1" argument(s): "Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_T 
YPEMISMATCH))" 
At line:1 char:293 
+ $vpc=new-object -com VirtualPC.Application -Strict; $vm = $vpc.findVirtualMachine("Windows XP Mode"); $broken = Get-W 
miObject Win32_PnPEntity | where {$_.ConfigManagerErrorCode -ne 0}; $usbDevice = $vpc.USBDeviceCollection | ? {$_.Devic 
eString -eq $usb} | select -first 1; $vm.AttachUSBDevice <<<< ($usbDevice) 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : ComMethodTargetInvocation 

有人知道如何解決這個問題?

(我知道代碼是有點不可思議,但是那不是點:))

+1

在你的代碼中你定義$ usb的位置? –

+0

我沒有定義usb,因爲usb不需要任何東西。如果我說= 0或=「」,它顯然不是一樣的。 – Freddy

回答

1

有很多問題,你的代碼,它可能只是在你的編輯器來工作,因爲在設置一些變量等你編輯器運行空間不在代碼中。甚至當它在編輯器中工作時,它可能不是你想要發生的或者你期望它發生的事情。

例如$usb未在代碼中的任何位置定義。所以基本上$usbDevice將會空出來,並且在下一個命令中你肯定會遇到類型不匹配。

其他更正/建議:

$vm = 0 - 你不必 「聲明」 變量。 Powershell是一種動態語言。

foreach ($vm in $vpc.VirtualMachines){} - 這條線的要點是什麼?最後你會以$vm擁有最後一個虛擬機$vpc.VirtualMachines

爲什麼你想讓他們在一條線上?如果需要,您可以複製這些行並粘貼到控制檯中。或者,您可以將它們放在腳本中並運行腳本。

+0

如果我只是複製文本並將其粘貼到PowerShell中,他將運行每一行單獨的,所以我不能使用以前的變量,我想... 我需要這是在同一行。它的easyer使用vb.net中的代碼 (我需要usb爲空=無名稱)\t 我沒有定義usb,因爲usb不需要任何東西。如果我說= 0或=「」,它顯然不是一樣的。 – Freddy

+0

@ user995364'所以我不能使用以前的變量,我認爲' - 不,事實並非如此。 – manojlds

+0

@ user995364 - 如果usb一無所有,你爲什麼要做'? {$ _。DeviceString -eq $ usb}' – manojlds

相關問題