我能够使用C#中的Powershell cmdlet从O365获取用户详细信息。问题是获取时间。太慢了。
每个用户需要2秒钟,所以如果我有大量用户,则会导致时间问题。
在这里,我只想打印所有用户的信息,例如姓名,组详细信息,许可证。我怎样才能更快地完成?
尝试过一次:
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline UserDetailsPipe = runspace.CreatePipeline();
UserDetailsPipe.Commands.AddScript("Get-AzureADUser");
foreach (PSObject info in UserDetailsPipe.Invoke())
{
ArrayList Groups = new ArrayList(); // to hold memberOf
ArrayList Licenses = new ArrayList(); // to hold of licenses
string UserPrincipalName = info.Members["UserPrincipalName"].Value.ToString();
string DisplayName = info.Members["DisplayName"].Value.ToString();
//Getting MemberOf
Pipeline memberPipe = runspace.CreatePipeline();
memberPipe.Commands.AddScript("Get-AzureADUser -ObjectId '" + UserPrincipalName + "'| Get-AzureADUserMembership");
//Getting Licenses
Pipeline licensePipe = runspace.CreatePipeline();
licensePipe.Commands.AddScript("$license = Get-AzureADUserLicenseDetail -ObjectId '" + UserPrincipalName + "' | select ServicePlans ");
licensePipe.Commands.AddScript("$license.ServicePlans");
foreach (var licensenames in licensePipe.Invoke())
{
Licenses.Add(licensenames.Members["ServicePlanName"].Value.ToString());
}
foreach (var memberOf in memberPipe.Invoke())
{
Groups.Add(memberOf.Members["DisplayName"].Value.ToString());
}
}
答案 0 :(得分:0)
您可以使用C#中的Microsoft Graph或Azure AD SDK,而不是出于目的使用Powershell cmdlet。 Microsoft Graph API是Azure AD Graph API的泛化,通常建议使用它代替Azure AD与数百万用户的数据进行交互。请参考以下链接以获取更多详细信息。
有关Microsoft Graph示例的信息,请参阅GitHub Repository- https://github.com/search?q=aspnet+sample+user:microsoftgraph&type=Repositories