3

システムにこの DataLink DLL があります - Interop.MSDASC.dllこのように Powershell から同じものをロードしようとしています -

[Reflection.Assembly]::LoadFile("C:\Interop.MSDASC.dll") | out-null

しかし、次のエラーが表示されます-

Exception calling "LoadFile" with "1" argument(s): "Could not load file or assembly 'Interop.MSDASC.dll' or one of its dependencies.  is not a 
valid Win32 application. (Exception from HRESULT: 0x800700C1)"
At line:1 char:32
+ [Reflection.Assembly]::LoadFile <<<< ("C:\Interop.MSDASC.dll") | out-null
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

これを正しくロードするにはどうすればよいですか?

4

3 に答える 3

9

これは 32 ビットの COM オブジェクトであるため、PowerShell の 32 ビット インスタンスからロードする必要があります。64 ビット バージョンの Windows でこれを行うには、次のフォルダで powershell.exe または powershell_ISE.exe を実行します: %SYSTEMROOT%\SysWow64\windowspowershell\v1.0

そして、これは完全なコードです:

[Reflection.Assembly]::LoadFile("C:\Interop.MSDASC.dll") 
$dataLinkInstance = new-object MSDASC.DataLinksClass
$dataLinkInstance.WriteStringToStorage("C:\\FrmPowershell.udl", "Provider=SQLOLEDB.1;", 2)
于 2012-04-23T08:38:18.943 に答える
3

http://datadictionary.codeplex.com/からダウンロードし、使用するのと同じ方法でアセンブリをロードしましたが、問題はありません。

 [System.Reflection.Assembly]::LoadFile( "c:\Program Files\DataDictionaryCreator\Interop.MSDASC.dll")

GAC    Version        Location
---    -------        --------
False  v2.0.50727     c:\Program Files\DataDictionaryCreator\Interop.MSDASC.dll

おそらくx64オペレーティングシステムを使用していますか? はいの場合は、ここを読んでくださいhttp://datadictionary.codeplex.com/workitem/28807

于 2012-04-20T16:10:26.907 に答える