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

.net 在64位环境中使用32位COM对象,.net,excel,powershell,64-bit,ms-office,.net,Excel,Powershell,64 Bit,Ms Office,我在Win7/64位上使用powershell 3。 我正在尝试将.net的excel(32位)与以下命令一起使用: [microsoft.office.interop.excel.xlfileformat] 我得到了这个错误: 找不到类型microsoft.office.interop.excel.xlfileformat:请确保已加载包含此类型的程序集。 我以前使用Win7/32位时没有这个错误。 也许有人知道如何解决这个问题?您需要像这样加载Excel互操作程序集: Add-Type -A

我在Win7/64位上使用powershell 3。 我正在尝试将.net的excel(32位)与以下命令一起使用: [microsoft.office.interop.excel.xlfileformat] 我得到了这个错误: 找不到类型microsoft.office.interop.excel.xlfileformat:请确保已加载包含此类型的程序集。 我以前使用Win7/32位时没有这个错误。
也许有人知道如何解决这个问题?

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

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

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

在尝试为
Outlook 2010 32位
运行
PowerShell 64位
中的
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位
模式下运行
ScriptBlock
。这对我需要的东西非常有用

因此,我的office是32位,mt环境是64位,这两者之间没有任何联系?没有,因为COM服务器(Excel)的进程已用完。我也有这个问题,但每次我再次运行脚本时,它都工作得很好。原来我是在Excel程序集开始构建电子表格后加载的。所以第一次它会出错,但当我再次尝试时,Excel程序集已经在运行,一切正常。因此,非常感谢您帮助我更好地理解Powershell Excel命令,非常感谢!