Я могу импортировать 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);
}