我在 Azure 自动化中有以下 PowerShell 脚本。需要连接到合作伙伴中心。
Connect-AzAccount -Identity
$accessToken = (Get-AzAccessToken -ResourceUrl "https://api.partnercenter.microsoft.com").Token
Connect-PartnerCenter -AccessToken $accessToken
Azure 自动化帐户正在使用 系统分配的托管标识。
该脚本需要在 Azure 自动化中运行,而不是作为登录用户运行。这可能吗? 脚本的范围将是:
Get-PartnerCustomer
之后运行
Error: Get-PartnerCustomer : (invalid_grant)
。我假设这是因为托管标识没有任何合作伙伴中心权限。MsDoc,您需要创建一个Microsoft Entra ID应用程序来验证合作伙伴中心。 创建一个
Microsoft Entra ID 应用程序并授予 API 权限,如下所示:
现在要连接到合作伙伴中心,请使用以下脚本:
$appId = "ClientID"
$appSecret = ConvertTo-SecureString -String "Secret" -AsPlainText -Force
$tenantId = "TenantID"
$credential = [PSCredential]::new($appId, $appSecret)
$tokenSplat = @{
ApplicationId = $appId
Credential = $credential
Scopes = "https://api.partnercenter.microsoft.com/user_impersonation"
ServicePrincipal = $true
TenantId = $tenantId
UseAuthorizationCode = $true
}
$token = New-PartnerAccessToken @tokenSplat
$token.RefreshToken
现在连接到合作伙伴中心:
$connectSplat = @{
ApplicationId = $appId
Credential = $credential
RefreshToken = $token.RefreshToken
}
Connect-PartnerCenter @connectSplat
例如,我执行了以下命令:
Get-PartnerRole
参考资料:
azure - Microsoft 合作伙伴 API:无法进行身份验证 - Stack Overflowpartner-rest/partner-rest/develop/api-authentication.md 位于文档·MicrosoftDocs/partner-rest·GitHub