#microsoft-graph-api #microsoft-graph-teams
#microsoft-graph-api #microsoft-graph-teams
Вопрос:
первая попытка работает, он добавляет группу объявлений ms graph в office365. Но вторая попытка улова (преобразование группы в команду не работает. Я получаю ошибку 404?? Идентификатор группы существует на сервере, который я заметил. Что происходит не так, чтобы получить 404?
Я добавил секретный токен на панель управления Azure. Скрипт имеет токен, appid и tenantid в реальном времени. также: у арендатора есть графические роли, такие как group.ReadWriteAll. то же самое для команд и каталогов.
Clear-Host
$env:graphApiDemoAppId = "" # Replace with your Azure AD app id
$env:graphApiDemoAppSecret = "" # Replace with your Azure AD app secret
$env:tenantId = "" # Replace with your Azure AD tenant ID
$oauthUri = "https://login.microsoftonline.com/$env:tenantId/oauth2/v2.0/token"
# Create token request body
$tokenBody = @{
client_id = $env:graphApiDemoAppId
client_secret = $env:graphApiDemoAppSecret
scope = "https://graph.microsoft.com/.default"
grant_type = "client_credentials"
}
# Retrieve access token
$tokenRequest = Invoke-RestMethod -Uri $oauthUri -Method POST -ContentType "application/x-www-form-urlencoded" -Body $tokenBody -UseBasicParsing
# Save access token
$accessToken = ($tokenRequest).access_token
$headers = @{
"Authorization" = "Bearer $accessToken"
"Content-type" = "application/json"
}
try
{
# Create group request body
$groupName = "Test_Kenvh16"
$groupBodyParams = @{
displayName = $groupName
description = $groupName
mailNickName = $groupName
groupTypes = @("Unified")
mailEnabled = $true
securityEnabled = $false
visibility = "Private"
}
$groupBody = ConvertTo-Json -InputObject $groupBodyParams
$newGroup = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/groups" -Method POST -Headers $headers -Body $groupBody
$groupId = $newGroup.id
Write-Host "group created:" $groupName "id:" $groupId
try
{
#convert group to team..
$teamBodyParams = @{
memberSettings = @{
allowCreateUpdateChannels = $true
}
messagingSettings = @{
allowUserEditMessages = $true
allowUserDeleteMessages = $true
}
funSettings = @{
allowGiphy = $true
giphyContentRating = "strict"
}
}
$teamBody = ConvertTo-Json -InputObject $teamBodyParams
$teamUri = "https://graph.microsoft.com/v1.0/groups/" $groupId "/team"
$newTeam = Invoke-RestMethod -Uri $teamUri -Method POST -Headers $headers -Body $teamBody
$teamId = $newTeam.id
}
catch
{
Write-Host "createTeam ExceptionMessage:" $_.Exception.Message
Write-Host "createTeam StatusCode:" $_.Exception.Response.StatusCode.value__
Write-Host "createTeam StatusDescription:" $_.Exception.Response.StatusDescription
}
}
catch
{
Write-Host "createGroup ExceptionMessage:" $_.Exception.Message
Write-Host "createGroup StatusCode:" $_.Exception.Response.StatusCode.value__
Write-Host "createGroup StatusDescription:" $_.Exception.Response.StatusDescription
}
Комментарии:
1. Я нашел некоторую информацию о MS: если группа была создана менее 15 минут назад, вызов Create team может завершиться ошибкой с кодом ошибки 404 из-за задержек репликации. Мы рекомендуем вам повторить вызов Create team три раза с 10-секундной задержкой между вызовами. Собираюсь попробовать это сегодня…
2. Я могу подтвердить. Microsoft необходимо реплицировать объекты на серверах. Таким образом, возможно, вы уже можете просматривать объекты, но они еще не реплицированы, поэтому вы пока не можете изменить их свойства. вывод заключается в том, что ошибка 404 не была ошибкой скрипта, это задержка репликации с Microsoft. Мое решение будет заключаться в том, чтобы запускать скрипт каждый день или 4 раза в день, а затем при следующем запуске он успешно преобразует группу в команду.
3. Да, вы правы, @ken. Я тоже могу наблюдать то же самое со своей стороны. Я бы посоветовал вам опубликовать ответ ниже. Так что это может быть полезно и для любого члена сообщества 🙂