.net core 如何在PowerShell Core中获取当前登录用户的Active Directory电子邮件地址?

.net core 如何在PowerShell Core中获取当前登录用户的Active Directory电子邮件地址?,.net-core,powershell-core,.net Core,Powershell Core,我在这里看到了其他问题/答案,它们展示了如何在Windows PowerShell中实现这一点,它们在Windows PowerShell中工作,但在PowerShell 6+中不起作用,即PowerShell Core,它构建在.NET Core之上 如何获取PowerShell Core中加入域的当前用户的Active Directory电子邮件地址 如果它们没有加入AD域,则不管它做什么(抛出错误,返回空字符串,等等) 谢谢 我在这里查看了示例:,但是“[adsi]”类型不可用 我考虑过“

我在这里看到了其他问题/答案,它们展示了如何在Windows PowerShell中实现这一点,它们在Windows PowerShell中工作,但在PowerShell 6+中不起作用,即PowerShell Core,它构建在.NET Core之上

如何获取PowerShell Core中加入域的当前用户的Active Directory电子邮件地址

如果它们没有加入AD域,则不管它做什么(抛出错误,返回空字符串,等等)

谢谢

我在这里查看了示例:,但是“
[adsi]
”类型不可用

我考虑过
“$env:username@$env:userdnsdomain”
,但结果不正确

谢谢

注意:这是在Windows中(特别是在Windows 10中)。我需要用户的电子邮件地址,以便使用ADAL生成身份验证令牌。它可以在.NET中不使用用户的电子邮件地址,但不能在.NET核心中使用


例如,我有一个用户的登录名是
m8345
。他的电子邮件地址可能是“
mike@somedomain.com
“或”
mike@otherdomain.com
“或”
mike@ntdev.somedomain.com
或“
迈克。smith@somedomain.com
”,等等,即登录名(即“%username%”)与电子邮件地址之间不一定存在任何关联。。。然而.NET可以解决它,但.NET core无法解决。

经历了许多磨难后,我发现:

([ADSI]"LDAP://<SID=$([Security.Principal.WindowsIdentity]::GetCurrent().User.Value)>").UserPrincipalName
([ADSI]“LDAP:/”).UserPrincipalName

您需要提供有关您的环境的更多信息。由于您的问题被标记为
powershell core
,我假设您没有运行Windows,那么您的操作系统是什么,用户的电子邮件地址存储在哪里?Ansgar--我编辑了这个问题。至于“用户的电子邮件地址存储在哪里?”,如果我知道,那么我就不需要问了,也就是说,这是我问题的关键。如果是本地帐户,而用户的帐户上没有电子邮件地址怎么办?梅根:如果是本地帐户,那么失败或返回空字符串是可以接受的。基本上,我在这些情况下不需要这个,所以在这些情况下的任何行为都是可以接受的。这不会在我的系统上提供任何电子邮件地址。我认为你需要把问题的范围限制在某个方面,比如域中的用户或其他什么。我的电脑是个人电脑。这是Windows 10,但这个表达式不会产生任何结果。我更新了问题以指定我要查找的内容——仅针对加入域的计算机上的AD域用户。