1

PowerShell モジュールを作成しています。Identity パラメーターを受け取り、Web サービスを呼び出し、PERSON 型 (Web サービスからの戻り値の型) のオブジェクトを返す Get-MyPerson 関数があります。

現在、いくつかのプロパティを更新するために Set-MyPerson オブジェクトに取り組んでいます。私ができるようにしたいのは:

Set-MyPerson 1234 -GolfHandicap 22
Get-MyPerson JDoe | Set-MyPerson -GolfHandicap 22

(後者は Get-ADUser | Set-ADUser の使用法に続く)

これには、Set-MyPerson が前者の場合は string 型のパラメーターを受け入れ、後者の場合は Person 型のパラメーターを受け入れ、パラメーター セットを使用して区別する必要があります。

文字列に対して機能する基本的な機能がありますが、Person オブジェクトのパラメーターに苦労しています。

[Parameter(ParameterSetName="Person",Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
[PERSON]$Person,

PowerShell が PERSON を認識しないため (予想どおり) は機能しません。

Set-MyPerson : タイプ [PERSON] が見つかりません: このタイプを含むアセンブリが読み込まれていることを確認してください。

PowerShell に PERSON クラスを認識させるにはどうすればよいですか?

4

2 に答える 2

2

またはで試します[object][psbject]

于 2013-07-23T12:04:21.050 に答える
1

反響の多い孤立の瞬間に思いついた私自身の解決策は、@JPBlancの解決策よりもかなり面倒でした:

WSDL コマンドを使用して CSharp ファイルを生成しました。

wsdl http://server.dns.name/webservice/path/service?wsdl

次に、CSharp コマンドライン コンパイラを使用してアセンブリを作成しました。

csc /target:library PersonService.cs

PersonService.dll という DLL を作成しました。

そして、使用:

$assemblyPath = "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PersonModule\PersonService.dll"
Add-Type -Path $assemblyPath

ロードします。

于 2013-07-23T12:47:37.507 に答える