Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Unassign all users from a specific pool
Unassign all users mappings from a specific pool
.Details required to run the script
1) Enter the Portal URL for $tenanturl
2) Enter Credentials information in $ADCredentials section which need below inputs
3) You will get a prompt to input pool id of the vm's
1) This script can run against one pool at a time
2) This script is for static pool assignments only, not to be used for floating since floating pools we will assign the group
#input the PORTAL URL & Domain
$tenanturl= ""
$taaddress = "https://" + $tenanturl + "/"
$dtlogin= "dt-rest/v100/system/authenticate/credentials"
$auth = @()
$ADCredentials = @()
#provide AD Creadentials Plain text
$ADCredentials ='
$taauthadderessuri= $taaddress+$dtlogin
#Create Initial auth request and this will used run further api calls
$auth = Invoke-WebRequest –Uri $taauthadderessuri –Method Post -Headers @{"Content-Type" ="application/json"} –Body $ADCredentials –ErrorAction stop
Write-Host -ForegroundColor Red -BackgroundColor Black "Error with Active Directory login, please check credentials."
#Get the auth headers for future API calls
Write-Host -ForegroundColor Green "Active Directory login successful."
$loginauth = $auth.headers.Authorization
$csrfheader = $auth.headers.'x-dt-csrf-header'
#Pull Assignments information
$poolsuri = ($taaddress + "dt-rest/v100/pool/manager/pools")
$poolsinfojson = Invoke-RestMethod -Uri $poolsuri -Method Get -Headers @{"Accept"="application/json";"Authorization"="$loginauth"}
foreach ($poolinfo in $poolsinfojson)
foreach ($pooldetails in $poolinfo) { foreach ($poolformat in $pooldetails) {write-host -ForegroundColor Cyan $ --> $}}
write-host -ForegroundColor DarkCyan "======================================================================================"
$pool_id = Read-Host "Enter the pool id where we have to remove all mappings"
write-host -ForegroundColor DarkCyan "======================================================================================"
#Get the user mappings from the pool mentioned above
$uservmmappinguri = ($taaddress + "dt-rest/v100/infrastructure/pool/desktop/" + $pool_id + "/user/desktop/mappings")
$uservmmappingjson = Invoke-RestMethod -Uri $uservmmappinguri -Method Get -Headers @{"Accept"="application/json";"Authorization"="$loginauth"}
#To remove user mappings we need user VM patternid and user guid
foreach ($mappingusers in $uservmmappingjson)
foreach ($mappinguser in $mappingusers)
foreach ($eachpattern in $mappinguser)
$user_id = $
$user_loginname = $eachpattern.DtUser.loginname
$staticpattern_name = $
$staticpattern_id = $
Write-Host -ForegroundColor White "$user_loginname - $user_id - $staticpattern_name - $staticpattern_id"
write-host -ForegroundColor Yellow "proceeding with above mapping removal"
#Unassign the user from specific vm pattern
$unassignuri = ($taaddress + "dt-rest/v100/infrastructure/pattern/static/" + $staticpattern_id + "/remove/user/" + $user_id)
Invoke-RestMethod -Uri $unassignuri -Method PUT -Headers @{"x-dt-csrf-header"="$csrfheader";"Authorization"="$loginauth"}
write-host -ForegroundColor Green "Removal of nmapping for $user_loginname --> $staticpattern_name is succeded on $pool_id"
write-host -ForegroundColor RED "Removal of mapping for $user_loginname --> $staticpattern_name failed"
write-host -ForegroundColor Cyan "======================================================================================"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment