C# では、次のようなコードがあります。
OleDbConnection cxn = New OleDbConnection();
cxn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='text;HDR=Yes;FMT=Delimited(,)';Data Source=" + System.IO.Path.GetDirectoryName(csvFilePath);
cxn.Open();
cxn.Close();
このコードはエラーなしで実行されます。
powershell の同じことは次のようになります。
$cxn = new-object System.Data.OleDb.OleDbConnection
$cxn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='text;HDR=Yes;FMT=Delimited(,)';Data Source=" + [System.IO.Path]::GetDirectoryName($csvFilePath);
$cxn.Open();
$cxn.Close();
しかし、上記のエラーは次のように表示されます。
"0" 個の引数で "Open" を呼び出す例外: "'Microsoft.Jet.OLEDB.4.0' プロバイダーがマシンに登録されていません"
64 ビットの Ms Windows 2008 Server R2 オペレーティング システムを使用しています。Jet.OLEDB.4.0
また、変更するACE.OLEDB.12.0
と機能するはずだという別の投稿に出くわしました。それは機能しましたが、同じものがdll/exeで「機能する」理由がわかりません.powershell内で失敗します。
しかし、私が直面している問題はまったく別の問題です。同様のコードが Web アプリケーション (wcf サービス) に存在します。これはフレームワーク 3.5 (clr 2.0) で動作すると思います。同様のコードが Windows サービスにも存在します。失敗するところ。