2011-01-03 14 views

答えて

2

ユーザーに特定の種類を指定したい場合は、通常は最適ですPowerShellに型キャストをさせる。例えば:

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

return $HowLongDidItLast 
} 

OR

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

は、ユーザーがケースには、しかし...

の数または "二時30分" のようなものを入力すると仮定すると、TimeSpanオブジェクトを返します範囲...それはインターフェイスなので、PowerShellはそれに対処するつもりはないので、直接入力することはできません。

一般的なルールとして、私はそのせいで不足のcoersionのPowerShellコマンドレットまたは関数のパラメータの種類などのインタフェースを避けるだろうが...

+0

Excelオブジェクトを含むコマンドレットの作成にはどのようにアプローチすればよいでしょうか? –

+0

特殊な自動変数を公開したり、$ Host.PrivateDataに追加のプロパティやメソッドを追加したりすると、それらとやりとりするコマンドレットを書くことができます。 NugetまたはPoshConsole + PowerBootsを見てください。これらの両方は、ホストの内部を、別のホストから実行しているときに動作しないか、動作しないコマンドレットに公開します。 – Jaykul

+0

よかった、ありがとう。 –

0

あなたは正確に何を目指していますか?たとえば、読者ホストが正確に返すものは何ですか?

読み取りホストをPSHost *インターフェイス経由でオーバーロードすることはできません。ただし、カスタムホストで使用可能なread-hostコマンドレットにproxy functionを作成することで、目的を達成できます。

+0

私はエクセルと通信ホストを作成しようとしています、そしてそれがあればいいだろうread-hostはExcelの範囲オブジェクトを返すことができます。 –

+2

ユーザはプロンプトでセル範囲に入力しますか?私はあなたが文字列として範囲をエンコードできなかったのだろうかと思います:> read-host | convertto-range? – beefarino

+0

私は今のようなものを実装しようとしています。 Excel.Application.InputBox()関数は、ユーザーが範囲を選択できるようにし、文字列として返すことができるように見えるので、入力を節約できます。 –

関連する問題