2013-11-25 40 views
3

我有一个用户的全名列表,我想要他们的SAMaccount名称,但是当我运行我的代码时,我没有得到任何结果。有人有主意吗?获取用户SAMaccount姓名全名

$users = Get-Content C:\users\admin\Desktop\move.txt 

foreach ($user in $users){ 
Get-ADUser -Filter {Name -eq "$user"} |Select-Object name, samaccountname 
} 
+0

究竟是$用户,是域\用户名?您是否尝试过使用名称 - “$ user” – malexander

+0

$ users是用户全名,即Jon Doe – JoeRod

+0

检查输入文件中是否存在空格:$ users = Get-Content C:\ users \ admin \ Desktop \ move.txt | %{$ _。trim()} – mjolinor

回答

3

可能是$ user在脚本块内为空。尝试使用双引号,而不是大括号,把变量单引号,使有效的查询(名称包含空格):

Get-ADUser -Filter "Name -eq '$user'" | Select-Object name, samaccountname 
+0

这样做了,谢谢! – JoeRod

0

单独使用姓氏和名字。

foreach ($user in $users){ 
    $SplitName = -split $user 
    Get-ADUser -Filter {(GivenName -eq $SplitName[0]) -and (Surname -eq $splitName[1])} |Select-Object name, samaccountname 
} 
2

这里是一个PowerShell脚本应该为你工作。你会想要去链接阅读细节,http://wbarena.com/2015/01/powershell-find-ad-user-full-name.html

Import-Module ActiveDirectory 
$aResults = @() 
$List = Get-Content “.\List.txt” 
ForEach($Item in $List){ 
$Item = $Item.Trim() 
$User = Get-ADUser -Filter{displayName -like $Item -and SamAccountName -notlike “a-*” -and Enabled -eq $True} -Properties SamAccountName, GivenName, Surname, telephoneNumber, mail 
$hItemDetails = New-Object -TypeName psobject -Property @{ 
FullName = $Item 
UserName = $User.SamAccountName 
Email = $User.mail 
Tel = $User.telephoneNumber 
} 
#Add data to array 
$aResults += $hItemDetails 
} 
$aResults | Export-CSV “.\Results.csv”