Diese Powershell Skripte verwenden die SharePoint REST Api zum Abrufen, Anlegen, Ändern und Löschen von SharePoint Gruppen und das Hinzufügen und Entfernen von Benutzern in den SharePoint Gruppen
1. Abrufen der SharePoint Gruppen
Dieses Skript ruft alle SharePoint Gruppen einer Site ab.
$siteUrl = "[SITEURL]"
$apiUrl = "$siteUrl/_api/web/sitegroups"
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers @{"Accept" = "application/json"} -Method Get
$jsonData = $response.Content | ConvertFrom-Json
$jsonData.value
2. Abrufen der SharePoint Gruppe mit der ID
Dieses Skript ruft eine bestimmte SharePoint Gruppe anhand ihrer ID ab.
$siteUrl = "[SITEURL]"
$groupId = 218
$apiUrl = "$siteUrl/_api/web/sitegroups/getById($groupId)"
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers @{"Accept" = "application/json"} -Method Get
$jsonData = $response.Content | ConvertFrom-Json
$jsonData
3. Anlegen einer SharePoint Gruppe
Dieses Skript erstellt eine neue SharePoint Gruppe.
$siteUrl = "[SITEURL]"
$apiUrl = "$siteUrl/_api/web/sitegroups"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue
$body = @{
"__metadata" = @{ "type" = "SP.Group" }
"Title" = "NeueGruppe"
"Description" = "Beschreibung der Gruppe"
} | ConvertTo-Json -Depth 3
$headers["X-RequestDigest"] = $requestDigest
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers $headers -Method Post -Body $body
$response.Content
4. Ändern einer SharePoint Gruppe
Dieses Skript ändert den Namen einer bestehenden SharePoint Gruppe.
$siteUrl = "[SITEURL]"
$groupId = 218
$apiUrl = "$siteUrl/_api/web/sitegroups/getById($groupId)"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue
$body = @{
"__metadata" = @{ "type" = "SP.Group" }
"Title" = "GeänderterGruppenname"
} | ConvertTo-Json -Depth 3
$headers["IF-MATCH"] = "*"
$headers["X-HTTP-Method"] = "MERGE"
$headers["X-RequestDigest"] = $requestDigest
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers $headers -Method Post -Body $body
$response.Content
5. Entfernen einer SharePoint Gruppe
Dieses Skript entfernt eine SharePoint Gruppe anhand ihrer ID.
$siteUrl = "[SITEURL]"
$groupId = 218
$apiUrl = "$siteUrl/_api/web/sitegroups/removeById($groupId)"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue
$headers["X-RequestDigest"] = $requestDigest
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers $headers -Method Post
$response.Content
6. Abrufen aller Benutzer in der SharePoint Site
Dieses Skript ruft alle Benutzer einer SharePoint Site ab.
$siteUrl = "[SITEURL]"
$apiUrl = "$siteUrl/_api/web/siteusers"
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers @{"Accept" = "application/json"} -Method Get
$response.Content | ConvertFrom-Json
7. Filtern der Benutzer nach Loginname
Dieses Skript filtert die Benutzer einer SharePoint Site nach ihrem Loginname.
$siteUrl = "[SITEURL]"
$userLogin = "[DOMAIN]\[ACCOUNTNAME]"
$apiUrl = "$siteUrl/_api/web/siteusers?`$filter=substringof('$userLogin', LoginName)"
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers @{"Accept" = "application/json"} -Method Get
$jsonData = $response.Content | ConvertFrom-Json
$jsonData.value
8. Filtern der Benutzer nach E-Mail
Dieses Skript filtert die Benutzer einer SharePoint Site nach ihrer E-Mail-Adresse.
$siteUrl = "[SITEURL]"
$userEmail = "[E-MAIL-ADRESSE]"
$apiUrl = "$siteUrl/_api/web/siteusers?`$filter=substringof('$userEmail', Email)"
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers @{"Accept" = "application/json"} -Method Get
$jsonData = $response.Content | ConvertFrom-Json
$jsonData.value
9. Ensure User in SiteUserInfoList
Dieses Skript stellt sicher, dass ein Benutzer in der SiteUserInfoList vorhanden ist.
$siteUrl = "[SITEURL]"
$userName = "[ACCOUNTNAME]"
$apiUrl = "$siteUrl/_api/web/ensureuser"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue
$apiUrl += "('$userName')"
$headers["X-RequestDigest"] = $requestDigest
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers $headers -Method Post -Body $body
$response.Content
10. Abrufen aller Benutzer von einer SharePoint Gruppe
Dieses Skript ruft alle Benutzer einer bestimmten SharePoint Gruppe ab.
$siteUrl = "[SITEURL]"
$groupId = 218
$apiUrl = "$siteUrl/_api/web/sitegroups/getById($groupId)/users?`$filter=substringof('[ACCOUNTNAME]', LoginName)"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}
$apiUrl
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers $headers -Method Get
$jsonData = $response.Content | ConvertFrom-Json
$jsonData.value
11. Hinzufügen eines Benutzers zu einer SharePoint Gruppe
Dieses Skript fügt einen Benutzer zu einer bestimmten SharePoint Gruppe hinzu.
$siteUrl = "[SITEURL]"
$groupId = 218
$apiUrl = "$siteUrl/_api/web/sitegroups/getById($groupId)/users"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue
$body = @{
"__metadata" = @{ "type" = "SP.User" }
"LoginName" = "[DOMAIN]\[ACCOUNTNAME]"
} | ConvertTo-Json -Depth 3
$headers["X-RequestDigest"] = $requestDigest
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers $headers -Method Post -Body $body
$response.Content
12. Entfernen eines Benutzers aus einer SharePoint Gruppe
Dieses Skript entfernt einen Benutzer aus einer bestimmten SharePoint Gruppe.
$siteUrl = "[SITEURL]"
$groupId = 218
$userId = 219
$apiUrl = "$siteUrl/_api/web/sitegroups/getById($groupId)/users/removeById($userId)"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue
$headers["X-RequestDigest"] = $requestDigest
$response = Invoke-WebRequest -Uri $apiUrl -UseDefaultCredentials -Headers $headers -Method Post
$response.Content