我有以下參數定義。在此腳本中,我必須擁有用戶的訪問ID,訪問密鑰和帳戶名稱。我還必須有設備ID,設備名稱或顯示名稱。最後,我需要包含一個或多個屬性名稱和相關的值。要求一個參數與一個開關,兩個與另一個參數
腳本使用這些信息的屬性名和值添加到設備(在我們的監控系統)。現在,我需要添加對刪除設備的支持,但我無法弄清楚如何更改參數定義。
我想用[轉],以確定用戶想要添加或刪除的屬性。如果用戶在運行腳本時包含-Add開關,那麼我將需要$ PropertyNames和$ PropertyValues。如果它們包含-Delete,那麼我只需要$ PropertyName。
什麼是實現這一目標的最佳方式是什麼?最好是有一個名爲「Operation」的參數,它將採用「Add」或「Delete」,然後將PropertyName/Values要求設置爲$ Operation的值?
謝謝。代碼段低於:
[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
)