Может ли Read-Host быть перегружен? - PullRequest
0 голосов
/ 03 января 2011

При записи собственного хоста PowerShell можно ли перегрузить Read-Host (т. Е. PSHostUserInterface.ReadLine), чтобы он возвращал объект вместо строки?

Ответы [ 2 ]

2 голосов
/ 03 января 2011

Если вы хотите, чтобы пользователь указал вам конкретный тип, обычно лучше всего разрешить 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 из-за отсутствия приведения ...

0 голосов
/ 03 января 2011

Чего именно вы хотите достичь? Например, что бы вы хотели, чтобы read-host возвращал точно?

Вы не сможете перегружать read-host через интерфейсы PSHost *; однако вы можете достичь желаемого, создав прокси-функцию в командлете read-host, доступном на вашем пользовательском хосте ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...