在64位环境中使用32位COM对象

我在Win7 / 64bit上使用PowerShell 3。 我试图使用.net的Excel(32位)与此命令:[microsoft.office.interop.excel.xlfileformat]而我得到这个错误:无法findtypesmicrosoft.office.interop.excel.xlfileformat:确保包含这种types的程序集被加载。 当我使用Win7 / 32bit之前,我没有这个错误。 也许有人知道如何解决这个问题?

您需要像这样加载Excel互操作程序集:

Add-Type -AssemblyName Microsoft.Office.Interop.Excel 

如果您需要使用Excel互操作程序集中定义的types,则必须先将该程序集加载到PowerShell中,然后才能引用在其中定义的types。 您正在使用枚举(xlFileFormat),因此PowerShell需要该types的定义。

尝试在PowerShell 64 bitOutlook 2010 32 bit运行Redemption.dll时,有一点类似的问题。 这是我解决它的方法:

 regsvr32.exe 'C:\path\Redemption.dll' regsvr32.exe 'C:\path\Redemption64.dll' $Job = Start-Job -ScriptBlock { $routlook = New-Object -COM Redemption.RDOSession $routlook } -RunAs32 Wait-Job -Job $Job Receive-Job -Job $Job 

显然, Start-Job有一个开关,以32 bit模式运行ScriptBlock 。 这对我所需要的很有用!