Как написать командлет PowerShell, чтобы использовать для ввода HashTable или PODO? - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть модуль powershell, который охватывает некоторые веб-сервисы.Веб-сервисы используют сложные простые сетевые объекты (PODO), и я использую HashTables как в параметрах командлета и New-Object MyPODO -Property $ MyHashTable преобразовать хеш-таблицу в объект запроса следующим образом:

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 для принятия HashTable или PODO определенного типа?

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Джеймс Трайанд дал мне этот ответ в твите .

Ответ должен использовать Наборы параметров .

В одном наборе параметров вы принимаете параметр типа HashTable, а в другом - тип PODO.

0 голосов
/ 15 сентября 2011

Может быть, как показано ниже, в зависимости от того, как вы хотите его использовать:

function Get-Stuff ($WhatStuff) {

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

...
}
...