我有一段時間以來一直在工作的功能,但由於讓參數集正常工作而遭受一些挫折,因此擱置了幾個月。它旨在成爲用於在站點間傳輸AD帳戶的內部工具包的一部分。有跡象表明,將需要幾個參數集:無法獲取參數集進行驗證
Move-AccountOut -Username <String> [<CommonParameters>]
Move-AccountOut -Username <String> [-RetainGroups] [-TransferMDrive] [-OldServer <String>] [-NewServer <String>]
[<CommonParameters>]
Move-AccountOut -Username <String> [-RetainGroups] [<CommonParameters>]
Move-AccountOut -Username <String> [-RemoveFromAllGroups] [-TransferMDrive] [-OldServer <String>] [-NewServer
<String>] [<CommonParameters>]
Move-AccountOut -Username <String> [-RemoveFromAllGroups] [<CommonParameters>]
Move-AccountOut -Username <String> [-TransferMDrive] -OldServer <String> -NewServer <String> [<CommonParameters>]
基本上RetainGroups
和RemoveFromAllGroups
必須是相互排斥的。 TransferMDrive
可以包含在其中任何一箇中,也可以獨立運行。
現在,我只能運行RetainGroups
和RemoveFromAllGroups
,如果我包含TransferHomeDrive
參數。如果我嘗試對自己的任何這些3,我得到如下:有關此功能的問題
Move-AccountOut : Parameter set cannot be resolved using the specified named parameters.
At line:1 char:1
+ Move-AccountOut -Username testuser -RetainGroups
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Move-AccountOut], ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,Move-AccountOut
我已經發布問題之前,但我仍然不能得到它來解決參數正確設置。根據上面的輸出get-help
,它應該工作,據我所知。
這裏是我的param
是什麼樣子:
[CmdletBinding(DefaultParameterSetName='OnlyUser')]
Param(
[Parameter(Mandatory=$True, ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True)]
[string]$Username,
[Parameter(ParameterSetName='RetainOnly')]
[Parameter(ParameterSetName='RetainAndTransfer')]
[switch]$RetainGroups,
[Parameter(ParameterSetName='RemoveOnly')]
[Parameter(ParameterSetName='RemoveAndTransfer')]
[switch]$RemoveFromAllGroups,
[Parameter(ParameterSetName='TransferMDrive')]
[Parameter(ParameterSetName='RetainAndTransfer')]
[Parameter(ParameterSetName='RemoveAndTransfer')]
[switch]$TransferMDrive,
[Parameter(ParameterSetName='TransferMDrive', Mandatory=$True)]
[Parameter(ParameterSetName='RetainAndTransfer')]
[Parameter(ParameterSetName='RemoveAndTransfer')]
[string]$OldServer,
[Parameter(ParameterSetName='TransferMDrive', Mandatory=$True)]
[Parameter(ParameterSetName='RetainAndTransfer')]
[Parameter(ParameterSetName='RemoveAndTransfer')]
[string]$NewServer
)
任何意見非常感謝!
謝謝!我比過去幾個月還要進步。我的6個參數集中有5個正在工作,唯一沒有的是'Move-AccountOut -Username [-TransferMDrive] -OldServer -NewServer []'。嘗試製作'TransferMDrive'是強制性的,但這並沒有幫助。有什麼建議麼? –
RyanL
根據您的參數設計,如果您指定-TransferMDrive以及-Old/NewServer,則PowerShell可將其縮小到TransferMDrive參數集。但是,如果未指定-TransferMDrive,給定params -Username,-OldServer和-NewServer,則PowerShell無法在RetainAndTransfer和RemoveAndTransfer參數集之間消除歧義。我認爲你需要'[參數(ParameterSetName ='RetainAndTransfer',強制= $真)] [轉] $ RetainGroups'。 RemoveGroups參數的同上。 –