[英]Python code works on cmd and VScode but not on powershell or pyinstaller
[英]Powershell code works in editor but not in Powershell cmd it self?
當我在編輯器中運行此代碼時,它可以正常運行:(不是一個錯誤)
$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
有人知道如何解決這個問題嗎?
(我知道代碼有點怪異,但這不是重點:)
您的代碼有很多問題,由於在您的編輯器運行空間中設置了一些變量,這些變量可能只是在您的編輯器中起作用,而這些變量不在代碼中。 而且即使它應該在編輯器中工作,也可能不是您想要發生的事情或您期望它做的事情。
例如, $usb
不在代碼中的任何地方定義。 因此,基本上$usbDevice
將$usbDevice
空,並且在下一個命令中,您必然會得到類型不匹配的信息。
其他更正/建議:
$vm = 0
您不必“聲明”變量。 Powershell是一種動態語言。
foreach ($vm in $vpc.VirtualMachines){}
-這行的目的是什么? 最后,您將獲得$vm
擁有$vpc.VirtualMachines
最后一個虛擬機的$vpc.VirtualMachines
您為什么要將它們放在一行中? 您可以根據需要復制這些行並粘貼到控制台中。 或者,您可以將它們放在腳本中並運行該腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.