2017-09-29 5 views
0

私は、パラメータとその値がデータベースに格納され、スペースで区切られたworkflowに渡されるケースがあります。このように:空白で引数として冗長な設定

Foo-Bar -hostName contoso -ipAddress 127.0.0.1 -userPassword passw0rd 

私は今、このフォーマットを使用して冗長好みを設定しようとしているが、このエラー:

Foo-Bar -hostName contoso -ipAddress 127.0.0.1 -userPassword passw0rd -Verbose $true 

正しい形式はもちろん-Verbose:$trueのですが、値が分離されなければなりません私のユースケースの場合はスペースです。私も-Verbose '$:true'を試しましたが、これは動作しません。

これは可能ですか?

答えて

1

スプラットを使用できますか?パラメータをスプラットに渡すと、$ param2はスペースで区切られます。

function Test ([string]$name, [switch]$switch){ 
    if($switch){ 
     write-host "$name the switch is on" 
    } else { 
     write-host "$name the switch is off" 
    } 
} 

$param1 = 'steve' 
$param2 = $false 

$splat = @{ 'name' = $param1; 'switch' = $param2; } 

Test @splat 
1

いいえ、できません。

そのように単純です。 スイッチパラメータでは、パラメータ名のみでパラメータを定義するか、:で値を設定します。

しかし、あなたができること。

ワークフローは、(パラメータとして何も渡さないためにnullではない、ない、空の文字列を、受け入れることができない場合は0、だけ...何かスペース、あなたは通常Foo-Bar -verbose

それ以外の場合はスイッチパラメータを使用することができ、あなたはboolean型と関数のパラメータを追加し、冗長なアクション・プリファレンスを自分で設定することができます。

If ($EnableVerbose) {$VerbosePreference = [System.Management.Automation.ActionPreference]::Continue} 

ここでアクションのように単純な例です。

function Foo-Bar() { 

[cmdletbinding()] 
Param([string]$File,[Boolean]$EnableVerbose) 


If ($EnableVerbose) {$VerbosePreference = [System.Management.Automation.ActionPreference]::Continue} 
    Write-Verbose 'Hi, My name is Samantha. I grew up in a small city in the north of Carolina. At age 5, I was expert at finding my way back to home after daddy left me alone in the wood. At that age, it happened several time already. It wasn''t the first time he did that to me and it wouldn''t be the last !...' 
} 

Foo-Bar -File 'MyFile.ext' -EnableVerbose $true 
関連する問題