2011-09-15 25 views
0

我有一個包含一些Web服務的PowerShell模塊。 Web服務需要複雜的普通老式點NET對象(PO​​DOs)和我一直在使用HashTables在cmdlet的參數和New-Object MyPODO,物業$ MyHashTable的哈希表變成請求對象,像這樣如何編寫PowerShell cmdlet以輸入HashTable或PODO?

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

然而,有時我有一個小命令,其響應對象可以直接成爲一個請求對象,像這樣:

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

是否有某種方式來裝點$ WhatStuff參數接受一個哈希表或特定類型的PODO?

回答

1

James Tryand給了我這個答案a tweet

答案是使用Parameter Sets

在一個參數集中,您接受類型爲HashTable的參數,而在另一個參數集中,您接受PODO類型。

0

也許就像下面,這取決於你想如何使用它:

function Get-Stuff ($WhatStuff) { 

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

... 
} 
相關問題