2017-09-29 1 views
0

Ich habe einen Fall, in dem Parameter und ihre Werte in einer Datenbank gespeichert und in ein workflow getrennt durch ein Leerzeichen übergeben werden. Wie folgt aus:Verbose Präferenz als Argument mit Leerzeichen

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

ich jetzt versuchen, die ausführliche Präferenz wahr in dieses Format zu setzen, aber diese Fehler:

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

Das richtige Format ist natürlich -Verbose:$true aber der Wert muss getrennt werden von einem Raum für meinen Anwendungsfall. Ich habe auch versucht -Verbose '$:true', aber das funktioniert nicht.

Ist das möglich?

Antwort

1

Können Sie Splatting verwenden? Übergeben Sie Ihre Parameter an den Splat, $ param2 wird jetzt durch ein Leerzeichen getrennt.

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

Nein, das geht nicht.

Einfach so. Switch-Parameter erwarten, dass der Parameter entweder nur mit dem Parameternamen oder mit : definiert wird.

Allerdings, was Sie tun könnten.

Wenn Ihr Workflow akzeptieren kann nichts als Parameter (nicht null, nicht eine leere Zeichenfolge übergeben, nicht 0 ist, nur ... nichts oder ein Raum, können Sie den Schalter-Parameter verwenden normalerweise Foo-Bar -verbose

Andernfalls Sie könnten einen Funktionsparameter mit einem boolean-Typ und stellen Sie die ausführliche Aktion Vorliebe selbst hinzufügen.

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

Hier als einfaches Beispiel in Aktion ist.

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