Public/Set-ADSIUserPassword.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
function Set-ADSIUserPassword
{
PARAM(
    [parameter(Mandatory=$true)]
    $Identity,

    [parameter(Mandatory=$true)]
    $Password,

    [Alias("RunAs")]
    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    $Credential = [System.Management.Automation.PSCredential]::Empty,

    [String]$DomainName)

    BEGIN
    {
        Add-Type -AssemblyName System.DirectoryServices.AccountManagement
        
        # Create Context splatting
        $ContextSplatting=@{}
        IF ($PSBoundParameters['Credential']){$ContextSplatting.Credential = $Credential}
        IF ($PSBoundParameters['DomainName']){$ContextSplatting.DomainName = $DomainName}
    }
    PROCESS
    {
        TRY{
            (Get-ADSIUser -Identity $Identity @ContextSplatting).SetPassword("$Password")
        }
        CATCH{
            Write-Error $Error[0]
        }
    }
}