从SAMaccountname获取用户电子邮件地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从SAMaccountname获取用户电子邮件地址相关的知识,希望对你有一定的参考价值。
我是PowerShell的新手,但实际上我需要一个脚本,所以我开始自己阅读这些内容并找到了powershell。
我有一个用户名单,如:
- xyxz
- 域名 xyxz.xyxc
此脚本应搜索我的用户列表中的所有samaccountname,并为每个samaccountname提供电子邮件地址。
获取内容C: Users xxxxx Desktop Users.txt | forEach {Get-ADUser“我不知道如何指定用户名”|选择邮件| Export-Csv output.csv}
这是我写的脚本,但我不知道如何完成它以使其工作。我知道它做得不好但我不想在没有自己做某事的情况下写一些文字。
你有点亲近
Get-Content C:UsersxxxxxDesktopUsers.txt | forEach { Get-ADUser $_ -properties EmailAddress} | select -ExpandProperty EmailAddress | Out-File output.csv
应该做的伎俩(如果你的txt文件包含samid,每行只有一个)。
您可以使用$_
访问管道内的对象。另外要使用select获取属性的String值,必须使用-ExpandProperty
。
在这种情况下,您还必须专门选择属性(EmailAddress),因为默认情况下仅报告一组有限的属性以减少工作负载(这通过指定-properties
参数来完成)。
你的命令是正确的。但是,Get-ADUser
似乎不接受UPN or Down-Level Logon Name格式的用户名。
要查询当前用户登录的域以外的域,您需要使用-Server
选项。此选项接受FQDN或NetBios域名。另一件事:默认情况下,Get-ADUser
仅返回默认属性集(请参阅this列表以了解默认属性),并且用户的电子邮件地址不是默认属性,因此我们需要使用-Properties
选项将其添加到返回值。
命令看起来像这样:
$defaultDomain = $env:USERDOMAIN
$usersFilePath = C:UsersxxxxxDesktopUsers.txt
Get-Content $usersFilePath | %{
if ($_.Contains("")) {
@{username = $_.Split("")[1]; server = $_.Split("")[0]}
}
elseif ($_.Contains("@")) {
@{username = $_.Split("@")[0]; server = $_.Split("@")[1]}
}
else {
@{username = $_; server = $defaultDomain}
}
} | %{ Get-ADUser -Identity $_.username -Properties Mail -Server $_.server} | select -ExpandProperty mail
以上是关于从SAMaccountname获取用户电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章
如何从 uid Firebase 数据库中获取电子邮件地址?