2017-06-07 7 views
0

私はパラメータセットを設定しようとしていますが、それは私がしようとしていることのベストプラクティスであるかどうかは分かりません。私が探しているセットアップは以下の通りです:パラメータセットのベストプラクティス設定

$FolderSetup - Not Manditory. [ValidateSet("Yes", "No"] Default is "No" 
    If "Yes" is used, then no following parameters should be able to be selected 
$OSVersion - Manditory. [ValidateSet("2008SP2", "2008R2", "2012R2", "2016", "All")]. 
    If "All" is used, then no following parameters should be able to be selected 

$InputFile - Not Manditory - User inputs location of file 
$OutputFolder - Not Manditory. - User inputs desired output location 
    $InputFile must be used before $OutputFolder can be used. 

例:

SinglePackage -FolderSetup 'Yes' 
    #No Other Parameters can be used 
SinglePackage -OSVersion 'All' 
    #No Other Parameters can be used 
SinglePackage -OSVersion '2008SP2' 
SinglePackage -OSVersion '2008SP2' -InputFile 'C:\Temp\MyFile.txt' 
SinglePackage -OSVersion '2008SP2' -InputFile 'C:\Temp\MyFile.txt' -OutputFolder 'C:\Temp\MyFolder' 
SinglePackage -OSVersion '2008SP2' -OutputFolder 'C:\Temp\MyFolder' 
    #Not Allowed. Must have -InputFile if using -OutputFolder 
+0

あなたが求めていることは明確ではありません。スクリプトがどのように呼び出されるかの例を挙げてください。 –

+0

あなたが見ているものに基づいて、それを行うことはできません。あなたはエラーを投げる機能でそれを行う必要があります – ArcSet

+0

@JeffZeitlin私は例を追加しました。私がそれをさらに説明しようとするかどうか私に教えてください。 – Keith

答えて

0

ここでは、あなたは私が最高だと思い

Function TEST(){ 
    Param(
     [Parameter(Position=0, Mandatory=$true)] 
     [switch]$FolderSetup, 

     [Parameter(Position=1, Mandatory=$false)] 
     [ValidateSet("2008SP2", "2008R2", "2012R2", "2016", "All")] 
     [string]$OSVersion, 

     [Parameter(ParameterSetName="InputFiles", Mandatory=$false)] 
     [string]$InputFile, 

     [Parameter(ParameterSetName="InputFiles", Mandatory=$false)] 
     [string]$OutputFolder 
    ) 

} 
+0

'[Switch]'として – ConnorLSW

+0

私は同意しますが、彼が求めたものではありません... – ArcSet

+0

彼はベストプラクティスを探しているので、それを行うための正しい方法を含む価値があります? – ConnorLSW

0

...を求めたのparamsを行う方法ですこれを行う方法は、次のようにパラメータブロックを宣言することです:

param(
    [Parameter(Mandatory=$true,ParameterSetName="Folder")] 
    [switch]$FolderSetup, 

    [Parameter(Mandatory=$true,ParameterSetName="AllVersions")] 
    [Alias("AllOS")] 
    [switch]$All, 

    [Parameter(Mandatory=$true,ParameterSetName="OSSpecific")] 
    [Parameter(Mandatory=$true,ParameterSetName="IOFolders")] 
    [ValidateSet("2008SP2","2008R2", "2102R2", "2016")] 
    [string]$OSVersion, 

    [Parameter(Mandatory=$true,ParameterSetName="IOFolders")] 
    [string]$InputFolder, 

    [Parameter(ParameterSetName="IOFolders")] 
    [string]$OutputFolder 
) 

これは、上記で指定した有効なフォームの1つにコールを強制し、無効な組み合わせを禁止します。どのパラメータセットが使用されているのか分からない場合は、エラーメッセージが表示されますが、これはパラメータの無効な組み合わせが試行されたことを保証します。

-OSVersion "All"を使用できないという制約があります。代わりに-Allまたは-AllOSを使用してください。

関連する問題