Groups/Set-GPPUser.ps1
function Set-GPPUser { [OutputType('GPPItemUser')] Param ( [Parameter(ParameterSetName = 'ByGPONameObject', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdObject', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword', Mandatory)] [GPPItemUser[]]$InputObject, [Parameter(ParameterSetName = 'ByGPONameItemName', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemName', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword', Mandatory)] [string]$Name, [Parameter(ParameterSetName = 'ByGPONameItemLiteralName', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword', Mandatory)] [string]$LiteralName, [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword', Mandatory)] [GPPItemUserSubAuthorityDisplay]$BuiltInUser, [Parameter(ParameterSetName = 'ByGPONameObject', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemName', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword', Mandatory)] [string]$GPOName, [Parameter(ParameterSetName = 'ByGPOIdObject', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemName', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword', Mandatory)] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword', Mandatory)] [guid]$GPOId, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [GPPContext]$Context = $ModuleWideDefaultGPPContext, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [GPPItemUserActionDisplay]$Action, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [string]$NewName, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [string]$FullName, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [string]$Description, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [bool]$AccountDisabled, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [datetime]$AccountExpires, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [bool]$PasswordNeverExpires, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [bool]$UserMayNotChangePassword, [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [bool]$UserMustChangePassword, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [bool]$Disable, [Parameter(ParameterSetName = 'ByGPONameObject')] [Parameter(ParameterSetName = 'ByGPOIdObject')] [Parameter(ParameterSetName = 'ByGPONameItemName')] [Parameter(ParameterSetName = 'ByGPOIdItemName')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralName')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralName')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUser')] [Parameter(ParameterSetName = 'ByGPONameObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdObjectUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemLiteralNameUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPONameItemBuiltInUserUserMustChangePassword')] [Parameter(ParameterSetName = 'ByGPOIdItemBuiltInUserUserMustChangePassword')] [switch]$PassThru ) if (-not $GPOId) { $GPOId = Convert-GPONameToID -Name $GPOName } $GPPSection = Get-GPPSection -GPOId $GPOId -Context $Context -Type ([GPPType]::Groups) if ($GPPSection) { if (-not $InputObject) { $GetFunctionParameters = @{} if ($BuiltInUser) { $GetFunctionParameters.Add('BuiltInUser', $BuiltInUser) } elseif ($LiteralName) { $GetFunctionParameters.Add('LiteralName', $LiteralName) } else { $GetFunctionParameters.Add('Name', $Name) } $InputObject = Get-GPPUser @GetFunctionParameters -GPPSection $GPPSection } if ($InputObject) { foreach ($UserObject in $InputObject) { if ($PSBoundParameters.ContainsKey('Action')) { $UserObject.Properties.Action = switch ($Action) { ([GPPItemUserActionDisplay]::Update) { [GPPItemAction]::U } ([GPPItemUserActionDisplay]::Delete) { [GPPItemAction]::D } } } if ($UserObject.Properties.Action -ne [GPPItemAction]::D) { if ($PSBoundParameters.ContainsKey('UserMustChangePassword')) { if ($UserMustChangePassword) { $UserObject.Properties.noChange = $null $UserObject.Properties.neverExpires = $null } $UserObject.Properties.changeLogon = $UserMustChangePassword } elseif ($PSBoundParameters.ContainsKey('PasswordNeverExpires') -or $PSBoundParameters.ContainsKey('UserMayNotChangePassword')) { if ($PasswordNeverExpires -or $UserMayNotChangePassword) { $UserObject.Properties.changeLogon = $null } if ($PSBoundParameters.ContainsKey('PasswordNeverExpires')) { $UserObject.Properties.neverExpires = $PasswordNeverExpires } if ($PSBoundParameters.ContainsKey('UserMayNotChangePassword')) { $UserObject.Properties.noChange = $UserMayNotChangePassword } } if ($PSBoundParameters.ContainsKey('NewName')) { $UserObject.Properties.newName = $NewName } if ($PSBoundParameters.ContainsKey('FullName')) { $UserObject.Properties.fullName = $FullName } if ($PSBoundParameters.ContainsKey('Description')) { $UserObject.Properties.description = $Description } if ($PSBoundParameters.ContainsKey('AccountDisabled')) { $UserObject.Properties.acctDisabled = $AccountDisabled } if ($PSBoundParameters.ContainsKey('AccountExpires')) { $UserObject.Properties.expires = Convert-DateTimeToGPPExpirationDate -DateTime $AccountExpires } } else { $UserObject.Properties.newName = $null $UserObject.Properties.fullName = $null $UserObject.Properties.description = $null $UserObject.Properties.changeLogon = $null $UserObject.Properties.noChange = $null $UserObject.Properties.neverExpires = $null $UserObject.Properties.acctDisabled = $null $UserObject.Properties.subAuthority = $null $UserObject.Properties.expires = $null } if ($PSBoundParameters.ContainsKey('Disable')) { $UserObject.disabled = $Disable } $UserObject.image = $UserObject.Properties.action.value__ # Fixes up the item's icon in case we changed its action $NewGPPSection = Remove-GPPUser -GPPSection $GPPSection -UID $UserObject.uid if ($NewGPPSection) { $NewGPPSection.Members.Add($UserObject) } else { $NewGPPSection = [GPPSectionGroups]::new($UserObject, $false) } if ($PassThru) { $UserObject } Set-GPPSection -InputObject $NewGPPSection -GPOId $GPOId -Context $Context -Type ([GPPType]::Groups) } } } } |