【问题标题】:Time consuming while Invoking PowerShell Scripts in C#在 C# 中调用 PowerShell 脚本时耗时
【发布时间】:2018-12-16 17:32:03
【问题描述】:

我能够使用 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());
        }
   }

【问题讨论】:

    标签: c# powershell azure office365 azure-active-directory


    【解决方案1】:

    您可以使用 C# 中的 Microsoft Graph 或 Azure AD SDK,而不是使用 Powershell cmdlet。 Microsoft Graph API 是 Azure AD Graph API 的泛化,通常建议使用它代替 Azure AD 来与数百万用户的数据进行交互。请参阅以下链接以获取更多详细信息。

    有关 Microsoft Graph 示例,请参阅 GitHub 存储库 - https://github.com/search?q=aspnet+sample+user:microsoftgraph&type=Repositories

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      相关资源
      最近更新 更多