如何使用应用程序ID和客户端密钥连接到O365 Shell?

问题描述

这是我用于使用appid和客户端机密连接到o365的代码,而没有交互式登录。我正在尝试调整代码以能够使用o365 shell v2。

我无法使v2(使用exo特定命令)正常工作,并且出现如下所示的错误提示“未知用户类型”。似乎connect-exchangeonline函数要使用等同于Application(客户端)ID的upn,有人知道如何生成upn或如何将以下代码与connect-exchangeonline cmdlet一起使用吗?

Add-Type -Path 'C:\Users\xxxx\Documents\Powershell\ExOnline\Microsoft.IdentityModel.Clients.ActiveDirectory.dll';

$argListLogin = "https://login.windows.net/xxxx.onmicrosoft.com";
$applicationId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
$clientSecret = "xxxxxxxxxxxx-x--xxxxxx-xxxxxxxxxxx";
$oAuthUser = "OAuthUser@" + $applicationId;

$authContext4 = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $argListLogin;
$ccred4 = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential -ArgumentList $applicationId,$clientSecret;
$authenticationResult4 = $authContext4.AcquiretokenAsync("https://outlook.office365.com",$ccred4);
$token = $authenticationResult4.Result.Accesstoken;
$Authorization = "Bearer {0}" -f $Token;
$Password = ConvertTo-securestring -AsPlainText $Authorization -Force;
$Ctoken = New-Object System.Management.Automation.PSCredential -ArgumentList $oAuthUser,$Password;
 
$sessionCloud = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveId?BasicAuthToOAuthConversion=true -Credential $Ctoken -Authentication Basic -AllowRedirection -Verbose;
Import-PSSession $sessionCloud;
get-mailBox "first.last";

unkNown_user_type:未知用户类型。 在C:\ Program Files \ WindowsPowerShell \ Modules \ ExchangeOnlineManagement \ 1.0.1 \ ExchangeOnlineManagement.psm1:line:445 char:30 $ PSSession = N $ ExchangeEnvironmentName -ConnectionUri $ ConnectionUri -AzureADAuthorizationEndpointUri> $ AzureADAuthorizationEndpointUri -UserPrincipalName $ UserPrincipalName.Value -PSSessionoption> $ PSSessionoption -Credential $ Credential.Value -BypassMail $委托组织

通过connect-exchangeonline功能

           if ($isCloudShell -eq $false)
        {
            
            $PSSession = New-ExoPSSession -ExchangeEnvironmentName $ExchangeEnvironmentName -ConnectionUri $ConnectionUri -AzureADAuthorizationEndpointUri $AzureADAuthorizationEndpointUri -UserPrincipalName $UserPrincipalName.Value -PSSessionoption $PSSessionoption -Credential $Credential.Value -BypassMailBoxAnchoring:$BypassMailBoxAnchoring -DelegatedOrg $DelegatedOrganization
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)