I die folgende Parameterdefinition haben. In diesem Skript muss ich die Zugriffs-ID, den Zugriffsschlüssel und den Kontonamen des Benutzers haben. Ich muss auch entweder eine Geräte-ID, einen Gerätenamen oder einen Anzeigenamen haben. Schließlich benötige ich die Aufnahme von einem oder mehreren Eigenschaftsnamen und den zugehörigen Wert (en).benötigen einen Parameter, der mit einem Schalter und zwei mit einem anderen
Das Skript verwendet diese Informationen, um die Eigenschaftsnamen und Wert auf das Gerät (in unserem Überwachungssystem) hinzuzufügen. Jetzt muss ich Unterstützung für das Löschen von Geräten hinzufügen, aber ich kann nicht herausfinden, wie ich die Parameterdefinition ändern würde.
Ich dachte an einen [Schalter], um festzustellen, ob der Benutzer eine Eigenschaft hinzufügen oder löschen möchte. Wenn der Benutzer den Schalter -Add beim Ausführen des Skripts eingefügt hat, benötige ich sowohl $ PropertyNames als auch $ PropertyValues. Wenn sie -Delete enthalten, benötige ich nur $ PropertyName.
Was wäre der beste Weg, dies zu erreichen? Wäre es besser, einen Parameter namens „Operation“, die „Hinzufügen“ oder „Löschen“ statt und stützen Sie die Property/Wert Anforderung auf dem Wert von $ Betrieb?
Danke. Der Code-Snippet ist unten:
[CmdletBinding(DefaultParameterSetName=’Default’)]
Param (
[Parameter(Mandatory=$True, ParameterSetName=’Default’)]
[Parameter(Mandatory=$True, ParameterSetName=’NameFilter’)]
[Parameter(Mandatory=$True, ParameterSetName=’IPFilter’)]
[string]$AccessId,
[Parameter(Mandatory=$True, ParameterSetName=’Default’)]
[Parameter(Mandatory=$True, ParameterSetName=’NameFilter’)]
[Parameter(Mandatory=$True, ParameterSetName=’IPFilter’)]
[string]$AccessKey,
[Parameter(Mandatory=$True, ParameterSetName=’Default’)]
[Parameter(Mandatory=$True, ParameterSetName=’NameFilter’)]
[Parameter(Mandatory=$True, ParameterSetName=’IPFilter’)]
[string]$AccountName,
[Parameter(Mandatory=$True,ParameterSetName=’Default’)]
[int]$DeviceId,
[Parameter(Mandatory=$True,ParameterSetName=’NameFilter’)]
[string]$DeviceDisplayName,
[Parameter(Mandatory=$True,ParameterSetName=’IPFilter’)]
[string]$DeviceName,
[Parameter(Mandatory=$True, ParameterSetName=’Default’)]
[Parameter(Mandatory=$True, ParameterSetName=’NameFilter’)]
[Parameter(Mandatory=$True, ParameterSetName=’IPFilter’)]
[string[]]$PropertyNames,
[Parameter(Mandatory=$True, ParameterSetName=’Default’)]
[Parameter(Mandatory=$True, ParameterSetName=’NameFilter’)]
[Parameter(Mandatory=$True, ParameterSetName=’IPFilter’)]
[string[]]$PropertyValues,
[switch]$WriteLog,
[string]$LogPath
)