Удаление списка пользователей из всех семейств сайтов в веб-приложении
Вот основа моего вопроса: я пытаюсь удалить очень большой список пользователей из всех семейств сайтов в нескольких веб-приложениях. Моя общая цель - удалить около 50000 пользователей из почти 10000 семейств сайтов (все семейства сайтов примерно в 15 веб-приложениях).
В настоящее время у меня есть способ сделать это, имея список пользователей и список сайтов, и просто просматривая сайты и удаляя каждого пользователя с каждого сайта.
Мне интересно, есть ли более эффективный способ сделать это, и или есть ли способ удалить пользователя из веб-приложения и сделать это каскадом в каждом из семейств сайтов.
Ниже то, что у меня сейчас есть:
$users = get-content $userList
$sites = get-content $siteList
Write-Host "Getting all listed sites"
Write-Host "Getting all listed users"
$siteArray = @()
for ($i=0; $i -lt $sites.length; $i++)
{
try
{
$rmUserCount = 0
$userNotExist = 0
$failedRm = 0
Write-Host "Working on" $sites[$i]"..."
for ($c=0; $c -lt $users.length; $c++)
{
Write-Host "Attempting to remove user" $users[$c] -ForegroundColor Yellow
try
{
write-host $isuser
$isUser = Get-SPUser -Identity $users[$c] -web $sites[$i] -ErrorAction SilentlyContinue
}
catch
{
}
if($isUser)
{
try
{
Remove-SPUser -Identity $users[$c] -Web $sites[$i] -Confirm:$false
Write-Host "The user" $users[$c] "was removed from the site" $sites[$i] -ForegroundColor Green
$rmUserCount++
}
catch
{
Write-Host "The user still exists and was not removed" -ForegroundColor Red
$failedRm++
}
}
else
{
$userNotExist++
Write-Host "user" $users[$c] "does not exist on" $sites[$i]"... moving on"
}
$isuser=$null
}
$addInArrayOut = $rmUserCount.ToString() + " users removed from " + $sites[$i].ToString() + ", " + $userNotExist.ToString() + " users did not exist on the site, " + $failedRm.ToString() + " users failed to be removed"
$siteArray += $addInArrayOut
}
catch
{
Write-Host $_ $Error[0] -ForegroundColor Red
}
}
Из моих вычислений с помощью команды measure я могу удалить примерно 10 пользователей в секунду, но это по-прежнему означает, что для выполнения этой задачи потребуются сотни дней, и я думаю, что для этого должен быть лучший способ.
Я попытался добавить URL веб-приложения в качестве одного из сайтов в массиве, и он не работал так, как я думал, потому что он не удалял пользователя из каждого семейства сайтов в нем.
Если у кого-то есть идеи, как сделать это лучше, или способ радикально ускорить то, что у меня есть, я был бы очень признателен. Спасибо!