PowerShell obligatorische parameter hängt von einem anderen parameter

Habe ich ein PowerShell-Funktion, die änderungen der registry key-Werte. Code:

param(
    [Parameter()] [switch]$CreateNewChild,
    [Parameter(Mandatory=$true)] [string]$PropertyType
)

Es wurde ein parameter "CreateNewChild", und wenn das flag gesetzt ist, wird die Funktion erstellen Sie die key-Eigenschaft, selbst wenn es nicht gefunden. Der parameter "Art der Unterkunft" muss zwingend sein, aber nur, wenn "CreateNewChild" - flag gesetzt wurde.

Die Frage ist, wie mache ich ein parameter zwingend, aber nur, wenn ein anderer parameter angegeben wurde?

OK, ich habe das Spiel mit ihm. Und das funktioniert:

param(
  [Parameter(ParameterSetName="one")]
  [switch]$DoNotCreateNewChild,

  [string]$KeyPath,

  [string]$Name,

  [string]$NewValue,

  [Parameter(ParameterSetName="two")]
  [switch]$CreateNewChild,

  [Parameter(ParameterSetName="two",Mandatory=$true)]
  [string]$PropertyType
)

Dies bedeutet aber, dass $Schlüsselpfad, $Name und $NewValue sind keine Pflicht mehr. Einstellung "ein" parameter obligatorisch bricht der code ("Parametersatz kann nicht aufgelöst werden" Fehler). Diese Parametersätze sind verwirrend. Ich bin mir sicher, dass es einen Weg gibt, aber ich kann nicht herausfinden, wie es zu tun.

InformationsquelleAutor lime | 2012-11-23
Schreibe einen Kommentar