0

我有一个包含一些 Web 服务的 powershell 模块。Web 服务采用复杂的普通旧点网对象 (PODO),我一直在使用HashTables作为 cmdlet 参数和New-Object MyPODO -Property $MyHashTable将哈希表转换为请求对象,如下所示

function Get-Stuff ([HashTable]$WhatStuff) {
    $service = New-ServiceProxy . . . .
    $request = New-Object GetStuffRequest -Property $WhatStuff;
    return $service.GetStuff($request);
    $response;
}

但是,有时我有一个 cmdlet,其响应对象可以直接成为请求对象,如下所示:

function Find-Stuff ([HashTable]$KindaStuff) {
    $service = New-ServiceProxy . . . .
    $request = New-Object GetStuffRequest -Property $KindaStuff;
    return $service.SearchStuff($request);
}

是否有某种方法可以装饰 $WhatStuff 参数以接受特定类型的 HashTable 或 PODO?

4

2 回答 2

1

James Tryand在一条推文中给了我这个答案。

答案是使用Parameter Sets

在一个参数集中,您接受 HashTable 类型的参数,而在另一个参数集中,您接受 PODO 类型。

于 2011-09-16T08:25:08.147 回答
0

可能如下所示,具体取决于您要如何使用它:

function Get-Stuff ($WhatStuff) {

    if(($WhatStuff -isnot [HashTable]) -or ($WhatStuff -isnot [PODOType])){ throw "expect it to be Hashtable or object of type"}

...
}
于 2011-09-15T16:16:06.890 回答