Получение определенных сведений о пользователе из AzureAD с помощью командлетов Powershell в C # - PullRequest
0 голосов
/ 04 июля 2018

Я могу импортировать AzureAD модуль и могу подключиться к AzureAD с помощью Connect-AzureAD PowerShell командлета в C#.

Когда я хочу перечислить пользователей, я просто использую Get-AzureADUser, получил всех пользователей.

Но когда я хочу перечислить конкретного пользователя, используя Get-AzureADUser -SearchString 'user@domain.com', я не могу отобразить список.

Пробовал:

    Runspace runspace = RunspaceFactory.CreateRunspace();
    runspace.Open();
    Pipeline pipeline = runspace.CreatePipeline();
    pipeline.Commands.AddScript("Import-Module AzureAD"); //importing

    //passing credentials
    pipeline.Commands.AddScript("$Username = '"+uname+"'");
    pipeline.Commands.AddScript("$Password = ConvertTo-SecureString '"+pwd+"'-AsPlainText -Force");
    pipeline.Commands.AddScript("$LiveCred = New-Object System.Management.Automation.PSCredential $Username, $Password");
    pipeline.Commands.AddScript("Connect-AzureAD -Credential $LiveCred");


    pipeline.Commands.AddScript("Get-AzureADUser -SearchString 'user@domain.com'");//needed one 

    foreach(PSObject info in pipeline.Invoke())
    {
        Console.WriteLine(info.Members["DisplayName"].Value);//not working
    }

Фактический PowerShell Командлет:

PS C:\Windows\system32> Get-AzureADUser -SearchString 'user@domain.com'

ObjectId                             DisplayName   UserPrincipalName                     UserType
--------                             -----------   -----------------                     --------
c36eb0fa-2500-4b3f-9499-1852e9ae44fc username user@domain.com Member

В случае перечисления всех пользователей мой код c# работает нормально. Но в случае конкретного пользователя мой код c# не работает. Где я ошибся?

Для просмотра всех пользователей: // отлично работает

          pipeline.Commands.AddScript("Get-AzureADUser");            
          var result = pipeline.Invoke();
            for(int i=0;i<result.Count;i++)
            {
                Console.Write(result[i].Members["DisplayName"].Value);
            }

1 Ответ

0 голосов
/ 04 июля 2018

Поскольку вы, по всей видимости, выполняете поиск с полным именем пользователя UPN, я думаю, что было бы лучше использовать переключатель ObjectID или даже попробовать параметр Filter .

Get-AzureADUser -ObjectId 'user@domain.com'

Посмотрите здесь: https://docs.microsoft.com/en-us/powershell/module/azuread/get-azureaduser?view=azureadps-2.0

...