1

長年のstackoverflowリーダー、初めてのポスター。私が正しく質問していないなら、私を許してください。

PowerShellでVixCOMAPIを使用しようとしています。どちらもあまり経験がありません。私はVMWareTasks:C#VixCOMラッパーライブラリとツールを知っています。私はこれをうまく使用しましたが、現時点では入りたくないという理由で、VixCOMAPIを直接使用したいと思います。最終的にVMWareTasksラッパーを使用する可能性がありますが、目前の問題を理解しようとしている間、ユーモアを交えてください。

私のスクリプトは次のとおりです。

$vixLib = New-Object -ComObject VixCOM.VixLib
$job = $vixLib.Connect(-1, 10, "https://esx-server/sdk", 0, "admin", "password", 0, $null, $null)

PowerCLIからこのスクリプトを実行すると、次のエラーが発生します。

Exception calling "Connect" with "9" argument(s): "Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"
At D:\dev\PowerShell\Automated Deploy\UsingVixCOM.ps1:11 char:23
+ $job = $vixLib.Connect <<<< (-1, 10, "https://esx-server/sdk", 0, "admin", "password", 0, $null, $null)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation
  • タイプの不一致の原因となっているパラメーターはどれですか?
  • Connectメソッドを呼び出す適切な方法は何ですか?
4

1 に答える 1

1

最後の2つのパラメータタイプが一致していないようです。

オブジェクトのメソッドとパラメータータイプを表示するには、次のGet-MemberようにCmdLetを呼び出します。

$vixLib = New-Object -ComObject VixCOM.VixLib

$vixLib | get-member

戻り値:

TypeName: System.__ComObject#{94eaa428-2460-470d-8f66-2a4270aff20a}  

Name                  MemberType Definition  
----                  ---------- ----------  
Connect               Method     IJob Connect (int, int, string, int, string, string, int, IVixHandle, ICallback)

次に、次のことを試してください
。1. Interop.VixCOM.dllをインポートして、インターフェイスタイプを取得します。2。IVixHandle
から継承する
新しいクラスを作成します。3。ICallbackから継承する新しいクラスを作成します。4。2
つのそれぞれの2つの新しいインスタンスを作成します。新しいクラス
5.それらのオブジェクトをConnectメソッドに渡します

https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=249840&SiteID=99の[回避策]タブにあるget-interfacesコマンドレットを使用する必要がある場合があります。

于 2011-10-21T22:59:33.113 に答える