Если вы хотите, чтобы пользователь указал вам конкретный тип, обычно лучше всего разрешить PowerShell выполнять приведение типов. Например:
function get-duration {
param(
[Parameter(Mandatory=$true)]
[TimeSpan]$HowLongDidItLast
)
return $HowLongDidItLast
}
ИЛИ
[TimeSpan](Read-Host "How long did it last?")
Возвращает объект timepan, предполагая, что пользователь ввел что-то вроде числа или «2:30» ...
Однако в случае с Excel.Range ... это интерфейс, поэтому PowerShell не будет иметь с ним дело, и вы не сможете запрашивать его напрямую.
Как правило, я бы избегал интерфейсов как типов параметров в командлетах или функциях PowerShell из-за отсутствия приведения ...