Groups/Set-GPPUser.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 |
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) } } } } |