Powershell Skripte zur Verwaltung von SharePoint Gruppen

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"}

# Request Digest abrufen
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue

# Neue Gruppe anlegen
$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"}

# Request Digest abrufen
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue

# Gruppenname ändern
$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"}

# Request Digest abrufen
$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]"
# Nur Benutzername, ohne Domäne
$userName = "[ACCOUNTNAME]"
$apiUrl = "$siteUrl/_api/web/ensureuser"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}

# Request Digest abrufen
$contextResponse = Invoke-WebRequest -Uri "$siteUrl/_api/contextinfo" -UseDefaultCredentials -Headers $headers -Method Post
$contextJson = $contextResponse.Content | ConvertFrom-Json
$requestDigest = $contextJson.FormDigestValue

# Benutzer hinzufügen
$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"}

# Request Digest abrufen
$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
## Die ID des Usereintrag in der Gruppe, NICHT DIE ID DES USERS
$userId = 219
$apiUrl = "$siteUrl/_api/web/sitegroups/getById($groupId)/users/removeById($userId)"
$headers = @{"Accept" = "application/json"; "Content-Type" = "application/json;odata=verbose"}

# Request Digest abrufen
$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
Kommentare sind geschlossen