Я пытаюсь подключиться к Azure AD и получить список учетных записей, соответствующих конкретной компании, и получить файл с информацией об учетной записи. Скрипт работает, если я использую интерактивный вход в систему, но мне нужно автоматизировать это с помощью входа в систему субъекта-службы. В этом скрипте появляется ошибка get-azureaduser
. Что я делаю не так?
# Connect to Azure AD
$tenantId = "xxxxxxx"
$clientId = "xxxxxxx"
$clientSecret = "xxxxxxxxx"
import-module az
$secureClientSecret = ConvertTo-SecureString $clientSecret -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($clientId, $secureClientSecret)
Connect-Azaccount -ServicePrincipal -TenantId $tenantId -Credential $credential
# Define the company name to filter by
$companyName = "some company"
# Get users from Azure AD, filter by company name and job title, and select required properties
$users = Get-AzureADUser -All $true | Where-Object {
$_.CompanyName -eq $companyName -and $_.JobTitle -ne $null
} | Select-Object DisplayName, JobTitle, Mail, Department
# Export the filtered users to a CSV file
$users | Export-Csv -Path "c:\temp\Users.csv" -NoTypeInformation
Я попробовал добавить
$currentAzureContext = Get-AzContext
$tenantId = $currentAzureContext.Tenant.Id
$accountId = $currentAzureContext.Account.Id
Connect-AzureAD -TenantId $tenantId -AccountId $accountId
но это также вызывает приглашение для входа в систему
Обратите внимание: модуль Azure AD PowerShell поддерживает проверку подлинности субъекта-службы или не выдает подсказку только при передаче
CertificateThumbprint
иApplicationId
. Обратитесь сюда MsDoc
Поэтому используйте Connect-AzureAD
и измените скрипт, как показано ниже:
# Define your tenant ID, application ID, and certificate thumbprint
$tenantId = "TenantID"
$applicationId = "APPID"
$certThumbprint = "CertTumbPrint"
# Connect to Azure AD using the certificate
Connect-AzureAD -CertificateThumbprint $certThumbprint -ApplicationId $applicationId -TenantId $tenantId
# Define the company name to filter by
$companyName = "ruk"
$users = Get-AzureADUser -All $true | Where-Object {
$_.CompanyName -eq $companyName -and $_.JobTitle -ne $null
} | Select-Object DisplayName, JobTitle, Mail, Department
# Export the filtered users to a CSV file
$users | Export-Csv -Path "C:\Users\v-rukmini\Downloads\rukcsvaad.csv" -NoTypeInformation
Обязательно загрузите сертификат в приложение Microsoft Entra ID:
.cer
необходимо загрузить в приложение Microsoft Entra ID..pfx
должен присутствовать на локальном компьютере, на котором вы выполняете код.Connect-Azaccount -ServicePrincipal
и Get-AzADUser
.Пожалуйста, задайте новый вопрос со всеми подробностями и поделитесь ссылкой здесь.
@AsthikaWelikala Хорошо принять решение, если оно решило проблему. Это во благо сообщества SO, смотрите SO Ссылка
@Rukmini stackoverflow.com/questions/78822469/…
использование certthumbprint сработало! Спасибо. дополнительный вопрос, какие именно разрешения необходимы субъекту-службе. Мне назначено следующее, но я получаю ошибку разрешения. если я назначу приложению роль администратора, оно будет работать. но мне неудобно добавлять эту роль в приложение.Directory.Read.All Чтение данных каталога Group.Read.All Чтение всех групп Да профиль Просмотр основного профиля пользователя User.Read Войдите в систему и прочтите профиль пользователя User.Read.All Читать все полные профили пользователей