在 C# 中使用 Powershell cmdlet 从 AzureAD 获取特定用户详细信息
Getting particular user details from AzureAD using Powershell cmdlets in C#
我能够导入 AzureAD
模块并能够在 C#
.
中使用 Connect-AzureAD
PowerShell cmdlet 连接 AzureAD
当我想列出用户时,我只是简单地使用 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
cmdlet:
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);
}
由于您显然是在使用完整的用户 UPN 进行搜索,我认为最好使用 ObjectID 开关,甚至尝试使用 Filter选项。
Get-AzureADUser -ObjectId 'user@domain.com'
看这里:https://docs.microsoft.com/en-us/powershell/module/azuread/get-azureaduser?view=azureadps-2.0
我能够导入 AzureAD
模块并能够在 C#
.
Connect-AzureAD
PowerShell cmdlet 连接 AzureAD
当我想列出用户时,我只是简单地使用 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
cmdlet:
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);
}
由于您显然是在使用完整的用户 UPN 进行搜索,我认为最好使用 ObjectID 开关,甚至尝试使用 Filter选项。
Get-AzureADUser -ObjectId 'user@domain.com'
看这里:https://docs.microsoft.com/en-us/powershell/module/azuread/get-azureaduser?view=azureadps-2.0