2017-08-16 28 views
3
if ($mbcb1.Checked -eq $true) {$dgr = "-AutoStart"} 

if ($mbcb2.Checked -eq $true) {$dgrc = "-AutoComplete"} 

if ($mbcb3.Checked -eq $true) {$dgren = "-NotificationEmails"} 

New-MigrationBatch -Name $mbnd -SourceEndpoint $mbcx -TargetDeliveryDomain $mbtdd -CSVData ([System.IO.File]::ReadAllBytes("$cmbcsvfile")) $dgr $dgrc $dgren [email protected] 


Error : 
A positional parameter cannot be found that accepts argument '-Autostart'. 
    + CategoryInfo   : InvalidArgument: (:) [New-MigrationBatch], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,New-MigrationBatch 
    + PSComputerName  : ps.outlook.com 

私は直接入力を与えられたが、変数投げエラーとして渡すと、引数を受け入れる位置パラメータを見つけることができません

答えて

4

あなたはパラメータ、使用スプラッティングをオプションで指定する場合:

$OptionalParameters = @{ 
    AutoStart = $mbcb1.Checked 
    AutoComplete = $mbcb2.Checked 
} 
if ($mbcb3.Checked) { 
    $OptionalParameters["NotificationEmails"] = '[email protected]' 
} 

New-MigrationBatch -Name $mbnd -SourceEndpoint $mbcx -TargetDeliveryDomain $mbtdd -CSVData ([System.IO.File]::ReadAllBytes("$cmbcsvfile")) @OptionalParameters 

我々は、単にパラメータ名とその引数とのハッシュテーブルを構築して、引数としてコマンドレットに供給(代わりのよう@name$name)、パーサはハッシュテーブルの各エントリを-key:valueの形式の名前付きパラメータに変換します。 ($mbcb3はチェックボックスがあると仮定して)Checkedが既にいずれか$trueまたは$false

パラメータは

をスプラッティングの詳細については about_Splattingヘルプファイルを参照してくださいあるので、
最後に、 $mbcb3.Checked -eq $true比較は、冗長です
関連する問題