public/AzureAD/Set-AzureADUserPasswordExpiration.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
<#
    .EXTERNALHELP ..\..\Set-AzureADUserPasswordExpiration-help.xml
#>

Function Set-AzureADUserPasswordExpiration {
    [CmdletBinding()]
    param (
        [Parameter(ParameterSetName="AllNoExpire")]
        [Parameter(ParameterSetName="AllExpire")]
        [Switch]
        $All,

        [Parameter(ParameterSetName="SearchStringNoExpire",Position=0)]
        [Parameter(ParameterSetName="SearchStringExpire",Position=0)]
        [String]
        $SearchString,

        [Parameter(ParameterSetName="AllNoExpire")]
        [Parameter(ParameterSetName="SearchStringNoExpire")]
        [Switch]
        $None,

        [Parameter(ParameterSetName="AllExpire")]
        [Parameter(ParameterSetName="SearchStringExpire")]
        [Switch]
        $Expire
    )

    $users = $null
    if ($PSCmdlet.ParameterSetName -like 'SearchString*') {
        $users = Get-AzureADUser -SearchString $SearchString
    }
    if ($PSCmdlet.ParameterSetName -like 'All*') {
        $users = Get-AzureADUser -All $true
    }

    if ($users) {
        if ($None) {
            $users | Set-AzureADUser -PasswordPolicies DisablePasswordExpiration
        }
        if ($Expire) {
            $users | Set-AzureADUser -PasswordPolicies None 
        }
    } else {
        throw 'No users selected to update.'
    }
}