Read-Host可以重载吗?

时间:2011-01-03 15:35:25

标签: c# powershell

编写自定义PowerShell主机时,是否可以重载Read-Host(即PSHostUserInterface.ReadLine)以返回对象而不是字符串?

2 个答案:

答案 0 :(得分:2)

当您希望用户为您提供特定类型时,通常最好让PowerShell进行类型转换。例如:

function get-duration {
    param(
    [Parameter(Mandatory=$true)]
    [TimeSpan]$HowLongDidItLast
    )

 return $HowLongDidItLast 
 }

OR

 [TimeSpan](Read-Host "How long did it last?")

返回一个timepan对象,假设用户输入的数字类似于“2:30”......

但是,对于Excel.Range ...它是一个接口,所以PowerShell不会处理它,你将无法直接提示它。

作为一般规则,我会避免将接口作为PowerShell cmdlet或函数中的参数类型,因为缺少coersion ......

答案 1 :(得分:0)

您到底想要完成什么?例如,您希望读取主机准确返回什么?

您将无法通过PSHost *接口重载读取主机;但是,您可以通过在自定义主机中可用的读取主机cmdlet上创建proxy function来完成所需的操作...