2017-06-01 27 views
1

これは可能かどうかはわかりませんが、試してみたいと思います。powershellのparam関数で変数を使用する方法は?

これは私が何をしようとしています何の基礎である:

function somefunction() { 
    $ListOfItems = (get-childitem c:\).name 
    param (
     [validateset($ListOfItems)][string]$Moo 
    ) 
} 

変数がvalidatesetまたはない使用可能な場合、私は知りません。それはそうではありません。可能であれば、私はこれをどうやってやりますか?

+0

。 –

+0

私は通常、サーバー名などを「名前」と置きます。しかし、私はできるだけ私のエンドユーザにとってそれを簡単にしようとしています。スクリプト内にオプションがあることは、彼が慣れていたことです。しかし、30台のサーバーには100台以上のプリンタがあります。私は、各サーバーを検証セットとして設定し、その検証スタック上のそのサーバーのプリンターのみを持っていました。また、私はそれを書き直す必要がないようにそれが自己更新されたかった。 – David

+1

検証は、*あなたが制御するリストに一致する値を持つパラメータを強制するためのものです。これは、(いつでも変更される可能性のある)プリンタのリストに対して、(いつでも変更される可能性のある)プリンタ名を検証するためのものではありません。あなたはまだ機能の本体でその種のチェックをしています。 –

答えて

1

これは実行可能です。

PS C:\> somefunction -Moo thing 

somefunction:パラメータ '武' に引数を検証することはできませんあなたは編集
ValidateScriptのデフォルトのエラーはユーザーフレンドリーではありませんValidateScript

Function somefunction() { 
    param (
     [ValidateScript({$_ -in (Get-Childitem C:\).Name})] 
     [string]$Moo 
    ) 
} 

後にしています。値 "thing"を持つ引数の "$ _ -in(Get-Childitem C :):名前"検証スクリプトはTrueの結果を返しませんでした。 検証スクリプトが失敗した理由を確認し、コマンドをもう一度実行してください。検証がどのように動作するかではありません

This StackOverflow post goes over how to generate custom error messages

0

コメントを読み、コメントに基づいて調査を完了した後、私はそれがしたいことをする簡単な方法がないと思う。

関連する問題