0

PowershellスクリプトをC#に変換する必要があります。

Powershellスクリプトは、Windows展開サービスのCOMオブジェクトにアクセスします。

$wdsObject = New-Object -ComObject WdsMgmt.WdsManager
$wdsServer = $wdsObject.getWdsServer("Localhost")
[...]

C#でこれらのCOMオブジェクトにアクセスすることは可能ですか?

Visual C#で対応するCOMオブジェクト参照が見つかりませんでした。System32からC#プロジェクトの参照として追加しようとしましwdsmgmt.dllたが、機能しませんでした。そうでなければ、私はかなり困惑しています。

編集:

コメント1への回答: C#からCOMオブジェクトにアクセスするための最良の方法

問題のCOMオブジェクトはリファレンスにリストされていません。私はそれを見逃さないようにリストを約5回調べました。そのCOMオブジェクトをC#のCOM参照リストに表示する方法はありますか?

コメント2への回答(機能しなかったもの):wdsmgmt.dllを追加しようとすると、次のエラーが表示されます。

Please make sure the file is accessible, and that it is a valid assembly or COM component.

このファイルにはアクセスできますが、C#から見ると有効なCOMコンポーネントではないようです。

レジストリでWdsMgmtを検索すると、COMオブジェクトが少なくとも何らかの形で存在していることがわかります。

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CD583E47-B079-4025-A799-5F951D016D3E}

多分言い換えられた質問は次のようになります:

Powershellで名前がわかっている場合、COMオブジェクト参照をC#に追加するにはどうすればよいですか?

4

2 に答える 2

1

TlbImpを使ってみましたか?

COMクラスラッパーの作成

C#コードでCOMオブジェクトとインターフェイスを参照するには、C#ビルドにCOMインターフェイスの.NETFramework定義を含める必要があります。これを行う最も簡単な方法は、.NET Framework SDKに含まれているコマンドラインツールであるTlbImp.exe(Type Library Importer)を使用することです。TlbImpは、COMタイプライブラリを.NET Frameworkメタデータに変換し、任意の管理言語から呼び出すことができる管理ラッパーを効果的に作成します。TlbImpで作成された.NETFrameworkメタデータは、/ Rコンパイラオプションを介してC#ビルドに含めることができます。Visual Studio開発環境を使用している場合は、COMタイプライブラリへの参照を追加するだけで、変換が自動的に行われます。

この相互運用ツールの詳細は次のとおりです。

Tlbimp.exe(タイプライブラリインポーター)

于 2013-01-30T10:28:33.287 に答える
1

dynamicを使用し、ProgIdでインスタンスを作成することにより、PowerShellの機能を直接ミラーリングできます。たとえば、https://stackoverflow.com/a/3251325/8446を参照してください。

于 2013-01-30T10:30:47.050 に答える