D365-PwdRst.ps1
|
function D365-PwdRst { param ( [string]$Dynamics365ClientId, [string]$Dynamics365ClientSecret, [string]$Dynamics365ResourceUrl, [string]$Dynamics365AuthorityUrl, [string]$Dynamics365ApiEndpoint, [string]$UserEmail, [string]$NewPassword ) # Authenticate with Dynamics 365 to get the Tenant ID $authContext = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext]::new($Dynamics365AuthorityUrl) $credential = [Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential]::new($Dynamics365ClientId, $Dynamics365ClientSecret) $authResult = $authContext.AcquireTokenAsync($Dynamics365ResourceUrl, $credential).Result $headers = @{ "Authorization" = "Bearer $($authResult.AccessToken)" } # Query Dynamics 365 for Tenant ID (You may need to adjust this part based on your D365 setup) $dynamics365Data = Invoke-RestMethod -Uri $Dynamics365ApiEndpoint -Headers $headers $tenantId = $dynamics365Data.TenantId # Reset the AD password try { Set-ADAccountPassword -Identity $UserEmail -NewPassword (ConvertTo-SecureString -AsPlainText $NewPassword -Force) Write-Host "Password reset successful for $UserEmail" } catch { Write-Host "Error resetting password: $_" } } # Example usage: # Reset-ADPasswordViaDynamics365 -Dynamics365ClientId "YourDynamics365ClientId" -Dynamics365ClientSecret "YourDynamics365ClientSecret" -Dynamics365ResourceUrl "https://yourdynamics365instance.crm.dynamics.com" -Dynamics365AuthorityUrl "https://login.microsoftonline.com/yourtenantid" -Dynamics365ApiEndpoint "https://yourdynamics365instance.crm.dynamics.com/api/data/v9.0/YourEntitySet" -UserEmail "user@example.com" -NewPassword "NewPassword123" |