使用PowerShell解除编排绑定的最干净方法是什么?
我想要一个在32位和64位平台上都能工作的东西。
我知道我可以加载并使用Microsoft.BizTalk.ExplorerOM程序集(用类似"Start-Job-RunAs32"的东西强制32位模式),并执行类似于此处解释的操作:http://msdn.microsoft.com/en-us/library/dd792703(v=bts.10).aspx
但我想找到更好的。
我看到您链接的示例脚本正在从GAC:加载此DLL
[System.reflection.Assembly]::LoadWithPartialName("Microsoft.BizTalk.ExplorerOM")
我不熟悉这个程序集,但如果它在GAC中预编译为x86,那么你需要用32位PowerShell加载它(在64位Windows系统上时)。在您的脚本中,您可以检查PowerShell进程的比特率:
if ( [IntPtr]::Size -eq 4 ) { # x86 } else { # x64 }
如果你的脚本运行不正确,我可以想到三件事:
- 如您所述,开始一项32位背景工作
使用32位PowerShell重新启动脚本(如果脚本有params,则无法正常运行):
if (-not $correctBitness) { Start-Process "C:WINDOWSsyswow64windowspowershellv1.0powershell.exe" -ArgumentList "-file", $Invocation.MyCommand.Path exit }
- 告诉用户他们需要使用32位PowerShell重新启动脚本并退出