为用户返回经理samaccountname

时间:2013-11-19 10:19:34

标签: powershell active-directory

我需要从AD创建包含所有活跃用户的CSV文件,包括直线经理属性,但我需要直线经理sAMAccountName,而不是cn。以下是我到目前为止的情况:

Get-ADUser -server server_ip -Filter { mail -like "*" -and ObjectClass -eq "user" } `
  -SearchBase "OU=Active Users,DC=eu,DC=ad,DC=some_company,DC=com" `
  -Properties objectGUID,displayName,office,division,department,employeeNumber,
    employeeID,mobilePhone,officePhone,ipphone,title,givenName,surname,mail,
    manager,sAMAccountName |
  Export-CSV "EU_AD_Properties.csv"

这会返回我想要的所有数据,但会向我提供直线经理的cn,而不是samacountname

有什么想法吗?

我试过这个:

Get-ADUser -server server_ip -Filter { mail -like "*" -and ObjectClass -eq "user" } `
  -SearchBase "OU=Active Users,DC=eu,DC=ad,DC=some_company,DC=com" `
  -Properties objectGUID,displayName,office,division,department,employeeNumber,
    employeeID,mobilePhone,officePhone,ipphone,title,givenName,surname,mail,
    @{Label="Manager";Expression={(Get-aduser -filter {sAMAccountName -eq $_.Manager}.sAMAaccountName)}},
    sAMAccountName |
  Export-CSV "EU_AD_Properties.csv"

然而这出错了。

3 个答案:

答案 0 :(得分:8)

你好 $ user是您查询经理信息的用户

(get-aduser (get-aduser $user -Properties manager).manager).samaccountName

答案 1 :(得分:7)

您无法在-Properties参数的参数中创建自定义属性,因为当前对象变量$_在该点不包含值(或者至少不是您想要的值) 。当select实际保存您需要处理的值时,您需要在管道中稍后的$_语句中执行此操作。您尝试创建自定义属性的方式也不起作用:

@{Label="Manager";Expression={(Get-aduser -filter {sAMAccountName -eq $_.Manager}.sAMAaccountName)}}

过滤器脚本块没有属性sAMAccountName。您实际想要做的是获取经理CN的用户对象并检索其sAMAccountName属性:

@{Label='Manager';Expression={(Get-ADUser $_.Manager).sAMAccountName}}

此外,您不需要过滤器ObjectClass -eq "user",因为Get-ADUser无论如何都只会返回用户对象。

所以你的管道应该是这样的:

Get-ADUser -Server IP -Filter {mail -like "*"} -Properties * `
    -SearchBase "OU=Active Users,DC=eu,DC=ad,DC=some_company,DC=com" |
  select objectGUID, displayName, office, division, department, employeeNumber,
    employeeID, mobilePhone, officePhone, ipphone, title, givenName, surname,
    mail, @{Name='Manager';Expression={(Get-ADUser $_.Manager).sAMAccountName}},
    sAMAccountName |
  Export-CSV "EU_AD_Properties.csv"

答案 2 :(得分:1)

Get-ADUser -Filter * -Properties Name,SamAccountName,AccountExpirationDate,Manager | select Name,SamAccountName,AccountExpirationDate,@{N='Manager';E={(Get-ADUser $_.Manager).sAMAccountName}} | Export-Csv "Userdata.csv"