خیلی از زمان پیش می اید که شما به عنوان یک مدیر سایت شیرپوینت نیاز دارید تا عملیاتی روی گروه ها یا کاربران انجام دهید که می خواهید در کمترین زمان ممکن انجام شود برای مثال یک کاربر از شرکت می رود و شما باید این کاربر را از تمامی گروه ها حذف کنید.در این مقاله چگونگی مدیرت گروه ها و کاربران سایت با پاورشل را فراخواهید گرفت.
خب باز هم می شه این موارد را به کمک پاورشل حل کرد:
حذف کاربر از تمامی گروه های شیرپوینت
برای حذف یک کاربر از تمامی گروه های شیرپوینت کافی است بعد از تغییر نام کاربری و نام سایت کد زیر را در پاورشل اجرا کنید:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Function Delete-UserFromAllSites([string]$WebAppURL, [string]$UserID)
{
$SitesColl = Get-SPWebApplication $WebAppURL | Get-SPSite -Limit All
foreach($Site in $SitesColl)
{
write-host "Site Name:" $Site.RootWeb.URL
$User = $Site.RootWeb.SiteUsers | Where-Object {$_.LoginName -eq $UserID}
if($User -ne $null)
{
#Remove User from the Site
Remove-SPUser $UserID -web $Site.RootWeb.URL -confirm:$false
write-host "Removed user from site collection:"$Site.RootWeb.URL -f Green
}
}
}
$WebAppURL = "http://portal.example.ir"
$UserID="pmo\j.daryabari"
Delete-UserFromAllSites $WebAppURL $UserID
همجنین اگر تعداد کاربران مد نظر بیش از یک عدد می باشد می توانید با استفاده از حلقه در پاورشل این اسکریپت را برای آنها تکرار کنید.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Function Delete-UserFromAllSites([string]$WebAppURL, [string]$UserID)
{
$SitesColl = Get-SPWebApplication $WebAppURL | Get-SPSite -Limit All
foreach($Site in $SitesColl)
{
write-host "Site Name:" $Site.RootWeb.URL
$User = $Site.RootWeb.SiteUsers | Where-Object {$_.LoginName -eq $UserID}
if($User -ne $null)
{
#Remove User from the Site
Remove-SPUser $UserID -web $Site.RootWeb.URL -confirm:$false
write-host "Removed user from site collection:"$Site.RootWeb.URL -f Green
}
}
}
$userNames= ("domain\user1", "pmo\user2", "pmo\user3")
foreach($user in $userNames)
{
#Call the function
Delete-UserFromAllSites "http://sharepoint.crescent.com" $user
}
حذف کاربر از یک گروه مشخص
شما می توانید به جای استفاده از UI جهت حذف کاربری مشخص از گروه مشخص از کد زیر با تغییر متغییر های تابع استفاده کنید.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Function RemoveUser-FromGroup($SiteURL, $GroupName, $UserAccount)
{
try
{
$ErrorActionPreference = "Stop"
$web=Get-SPWeb $SiteURL
$User = Get-SPUser -Identity $UserAccount -Web $web
$Group = $Web.sitegroups | Where-Object {$_.Name -eq $GroupName}
if($Group -ne $null)
{
$Group.RemoveUser($User)
Write-Host "$($User) Removed from the Group: $($GroupName)"
}
}
catch
{
write-host $_.Exception.Message
}
finally
{
$ErrorActionPreference = "Continue"
}
}
$web ="http://portal.example.ir"
$group ="Administrator"
$user= "wp\sharepointTest"
RemoveUser-FromGroup $web $group $user
حذف تمام کاربران یک گروه
برای حذف تمامی کاربران از یک گروه می توانید از کد زیر با تغییر متغییر ها استفاده کنید.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Function RemoveUser-FromGroup($SiteURL, $GroupName, $UserAccount)
{
try
{
$ErrorActionPreference = "Stop"
$web=Get-SPWeb $SiteURL
$User = Get-SPUser -Identity $UserAccount -Web $web
$Group = $Web.sitegroups | Where-Object {$_.Name -eq $GroupName}
if($Group -ne $null)
{
$Group.RemoveUser($User)
Write-Host "$($User) Removed from the Group: $($GroupName)"
}
}
catch
{
write-host $_.Exception.Message
}
finally
{
$ErrorActionPreference = "Continue"
}
}
$web ="http://portal.example.ir"
$group ="Administrator"
$user= "wp\sharepointTest"
RemoveUser-FromGroup $web $group $user