Clear-Host $username = "monuser/token" $password = "letoken" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password))) #Appel d'api pour récupérer des users $Result = Invoke-RestMethod https://masociete.zendesk.com/api/v2/users.json?page=5078 -Method Get -Headers @{Authorization=("Basic $base64AuthInfo")} #On liste tous les agents avec un email en @example.com #https://developer.zendesk.com/api-reference/ticketing/users/user_identities/#make-identity-primary foreach ($UneLigne in $Result.users | Where-Object {$_.email -match ".*@example.com"}){ Write-Host $UneLigne.name Write-Host "email actuel $($UneLigne.email)" $nouvelEmail = $UneLigne.email -replace '\+masociete.fr@example.com','@masociete.fr' Write-Host "Nouvel email : $nouvelEmail" #On ajoute une nouvelle adresse mail sur la personne $MyIdentity = @{ "identity" = @{ "type" = "email"; "value"= "$nouvelEmail"; }} $JSON = $MyIdentity | convertto-json $CreateIdentities = Invoke-RestMethod https://masociete.zendesk.com/api/v2/users/$($UneLigne.id)/identities.json -Method Post -Body $JSON -ContentType 'application/json' -Headers @{Authorization=("Basic $base64AuthInfo")} #On récupère les identity de la personne et on passe l'adresse non primary en primary Write-Host "URL de la personne : https://masociete.zendesk.com/api/v2/users/$($UneLigne.id)/identities.json" $ResultRechercheidentities = Invoke-RestMethod https://masociete.zendesk.com/api/v2/users/$($UneLigne.id)/identities.json -Method Get -Headers @{Authorization=("Basic $base64AuthInfo")} foreach ($UneLigneIdentities in $ResultRechercheidentities.identities){ Write-Host "$($UneLigneIdentities.id) Type : $($UneLigneIdentities.type) Value : $($UneLigneIdentities.value) Primary : $($UneLigneIdentities.primary)" if ($($UneLigneIdentities.primary) -eq $false){ $ResultRechercheidentities = Invoke-RestMethod https://masociete.zendesk.com/api/v2/users/$($UneLigne.id)/identities/$($UneLigneIdentities.id)/make_primary.json -Method Put -Headers @{Authorization=("Basic $base64AuthInfo")} Write-Host "Passage de $($UneLigneIdentities.value) en tant qu'email principal" } } #Maintenant qu'on a ajouter une nouvelle adresse email, on supprime l'ancienne foreach ($UneLigneIdentities in $ResultRechercheidentities.identities){ #Write-Host "$($UneLigneIdentities.id) Type : $($UneLigneIdentities.type) Value : $($UneLigneIdentities.value) Primary : $($UneLigneIdentities.primary)" if ($($UneLigneIdentities.primary) -eq $false){ $ResultRechercheidentities = Invoke-RestMethod https://masociete.zendesk.com/api/v2/users/$($UneLigne.id)/identities/$($UneLigneIdentities.id).json -Method Delete -Headers @{Authorization=("Basic $base64AuthInfo")} #Write-Host "" Write-Host "Adresse mail $($UneLigneIdentities.value) supprimée" } } Write-Host "" #Start-Sleep -Seconds 3 }