编写自定义PowerShell主机时,是否可以重载Read-Host(即PSHostUserInterface.ReadLine)以返回对象而不是字符串?
答案 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来完成所需的操作...