Как написать командлет PowerShell, который будет принимать на вход HashTable или PODO?

У меня есть модуль PowerShell, который охватывает некоторые веб-службы. Веб-службы используют сложные объекты Plain Old Dot Net (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 определенного типа?


person Justin Dearing    schedule 15.09.2011    source источник


Ответы (2)



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

function Get-Stuff ($WhatStuff) {

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

...
}
person manojlds    schedule 15.09.2011