GVKun编程网logo

从 O365 组的成员列表中获取 AD 计算机

1

对于想了解从O365组的成员列表中获取AD计算机的读者,本文将提供新的信息,并且为您提供关于Mailkit无法使用O365oAuth2帐户进行身份验证、O365Admin中未显示动态通讯组列表、O36

对于想了解从 O365 组的成员列表中获取 AD 计算机的读者,本文将提供新的信息,并且为您提供关于Mailkit 无法使用 O365 oAuth2 帐户进行身份验证、O365 Admin 中未显示动态通讯组列表、O365 API 不返回团队会议的会议 ID 和收费号码、O365 API,转发电子邮件的有价值信息。

本文目录一览:

从 O365 组的成员列表中获取 AD 计算机

从 O365 组的成员列表中获取 AD 计算机

如何解决从 O365 组的成员列表中获取 AD 计算机

我正在尝试从 O365 中的组中获取成员列表,然后使用该列表获取所有 Active Directory 计算机。

获取成员列表:

  1. $list = Get-UnifiedGroup -Identity "Group Name" | Get-UnifiedGroupLinks -LinkType Member | Select displayName

然后获取计算机:

  1. foreach($user in $list) {
  2. Get-ADComputer -Filter "Description -like ''$user''" -Property Name,Description | Select -Property Name
  3. }

但是当我运行第二个命令时没有任何反应。当我调用它时,我可以看到填充了 $list。任何人都知道我做错了什么或有更好的方法来做到这一点?请记住,我对 powershell 一窍不通。

解决方法

"Description -like ''$user''" 更改为 "Description -like ''$($user.DisplayName)''"

Mailkit 无法使用 O365 oAuth2 帐户进行身份验证

Mailkit 无法使用 O365 oAuth2 帐户进行身份验证

如何解决Mailkit 无法使用 O365 oAuth2 帐户进行身份验证

我尝试对我在 Azure 门户上创建的 O365 应用程序进行身份验证,但它没有按预期工作。

以下代码运行良好,但它使用登录名/密码,Microsoft 不建议这样做。 (在此处找到 https://github.com/jstedfast/MailKit/issues/989)

var scopes = new[] { "https://outlook.office365.com/IMAP.AccessAsUser.All" };

var confidentialClientApplication = PublicclientApplicationBuilder.Create(_clientId).WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs).Build();

securestring securePassword = new NetworkCredential("",_userPassword).SecurePassword;
var acquiretokenByUsernamePasswordParameterBuilder = confidentialClientApplication.AcquiretokenByUsernamePassword(scopes,_userMail,securePassword);
var authenticationResult = acquiretokenByUsernamePasswordParameterBuilder.ExecuteAsync().Result;

if (_debugCall)
{
imapClient = new ImapClient(new ProtocolLogger(_configurationId + "_IMAP_" + DateTime.Now.ToString("yyyyMMddHhssffff") + ".log"));
}
else
{
imapClient = new ImapClient();
}
        
imapClient.CheckCertificateRevocation = false;
imapClient.ServerCertificateValidationCallback = (s,c,h,e) => true;

imapClient.Connect(_webServiceUrl,_webServicePort,SecureSocketoptions.Auto);
imapClient.Authenticate(new SaslMechanismOAuth2(_userMail,authenticationResult.Accesstoken));  

if (string.IsNullOrEmpty(_folder))
{
oFolder = imapClient.InBox;
}    
else
{
oFolder = imapClient.GetFolder(_folder);
}
oFolder.Open(FolderAccess.ReadWrite);

事实上,我希望能够使用tenanid、client secret和clientid进行身份验证,但没有交互模式(因为该应用程序是Windows服务)。

因此,我尝试使用带有tenantid、clientSecret 和ClientId 的另一个代码,但收到“身份验证失败”错误消息:

  var confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(_clientId)
    .WithClientSecret(_clientSecret)
    .WithRedirectUri("http://localhost")
    .WithAuthority(new Uri("https://login.microsoftonline.com/" + _tenantid + "/"))
    .Build();
             
    var scopes = new[] { "https://outlook.office365.com/.default" };
    
    var authenticationResult = confidentialClientApplication.AcquiretokenForClient(scopes);
            
    var authToken = authenticationResult.ExecuteAsync().Result;
    var oauth2 = new SaslMechanismOAuth2(_userMail,authToken.Accesstoken);
    imapClient = new ImapClient(new ProtocolLogger("TEST_IMAP_" + DateTime.Now.ToString("yyyyMMddHhssffff") + ".log"));
    
    imapClient.CheckCertificateRevocation = false;
    imapClient.ServerCertificateValidationCallback = (s,e) => true;
               
    imapClient.Connect(_webServiceUrl,SecureSocketoptions.Auto);
    imapClient.Authenticate(oauth2);

我在 Azure 门户上拥有我的应用程序的以下权限:

MSGraph
IMAP.AccessAsUser.All
Mail.Read
Mail.ReadWrite
Mail.Send

我错过了什么吗?恐怕不可能吧? Mailkit 官网的示例使用交互模式。

顺便说一句,我使用的是 Mailkit v2.4

感谢您的帮助。

解决方法

似乎 Microsoft Exchange IMAP/POP3/SMTP 协议不支持通过非交互式方法对 Office365 进行 OAUTH2 身份验证,并且使用非交互式方法访问 Office365 邮件的唯一方法是OAUTH2 身份验证的交互方法是通过 Microsoft.Graph API。

在过去的几个月里,我收到了很多关于这个的问题,据我所知,没有人(包括我自己)能够找到一种方法来完成这项工作。

我一直希望看到有人在 StackOverflow 上尝试这样做(甚至用另一种语言),并给出一个可接受的答案。到目前为止,我所看到的都是关于使用交互式方法的 OAuth2 的问题(正如您所见,我已经为 MailKit 编写了文档,并且众所周知可以很好地与 MailKit 配合使用)。

O365 Admin 中未显示动态通讯组列表

O365 Admin 中未显示动态通讯组列表

如何解决O365 Admin 中未显示动态通讯组列表

我在我的在线交换中创建了一个动态分发列表(这应该包含我所有的员工,我打算在我的 Power Automate 中使用它)但是创建它 3 小时后,它仍然没有显示在我的 M365 管理中心.有谁知道它是否会出现在这里,如果是,需要多长时间?

下面:Exchange 管理中心和我创建的 DDL

下面:我的 M365 管理中心的屏幕截图

O365 API 不返回团队会议的会议 ID 和收费号码

O365 API 不返回团队会议的会议 ID 和收费号码

如何解决O365 API 不返回团队会议的会议 ID 和收费号码

根据此页面 (https://docs.microsoft.com/en-us/graph/outlook-calendar-online-meetings?tabs=http),创建事件时应返回

  1. "onlineMeeting": {
  2. "joinUrl": "https...","conferenceId": "291633251","tollNumber": "+1 323-555-0166"
  3. }

我收到的是:

  1. "onlineMeeting": {
  2. "joinUrl": "https...",}

我在获取现有事件 (https://docs.microsoft.com/en-us/graph/api/onlinemeeting-get?view=graph-rest-1.0&tabs=http) 时遇到同样的问题

似乎与这个问题有关,但我没有解决这个问题:Microsoft Graph API Creating Event no longer returning conferenceId

解决方法

此问题已记录为已修复。请重试创建事件,如果您能够重现该问题,团队将重新审视该问题。谢谢

O365 API,转发电子邮件

O365 API,转发电子邮件

如何解决O365 API,转发电子邮件

无论如何都可以使用 o365 API 转发消息吗?

这就是我努力做到的:

  1. # Authentification
  2. from O365 import Account,message
  3. credentials = (''Client_ID'',''Secret_Client'')
  4. account = Account(credentials)
  5. print(account)
  6. if account.authenticate(scopes=[''basic'',''message_all'']):
  7. print(''Authenticated!'')
  8. # Read Sent Email :
  9. mailBox = account.mailBox()
  10. sent_folder = mailBox.sent_folder()
  11. for message in sent_folder.get_messages(1):
  12. print(message)

有什么办法可以转发这条消息吗?

我看到使用 PHP 在 microsoft graph 上是可能的:https://developer.microsoft.com/fr-fr/graph/graph-explorer:检查邮件:转发邮件

Forward Microsoft Graph PHP

今天的关于从 O365 组的成员列表中获取 AD 计算机的分享已经结束,谢谢您的关注,如果想了解更多关于Mailkit 无法使用 O365 oAuth2 帐户进行身份验证、O365 Admin 中未显示动态通讯组列表、O365 API 不返回团队会议的会议 ID 和收费号码、O365 API,转发电子邮件的相关知识,请在本站进行查询。

本文标签: