【问题标题】:Return manager's samacountname for users为用户返回经理 samaccountname
【发布时间】:2013-11-19 10:19:34
【问题描述】:

我需要从 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"

但是这会出错。

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您不能在 -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"
      

      【讨论】:

      • 对不起这个错误:
        Get-ADUser:服务器返回了以下错误:无效的枚举上下文。在 E:_AxiosSoftware\CUG\eu_ad_export.ps1:2 char:11
      • + Get-ADUser
      • + CategoryInfo : NotSpecified: (:) [Get-ADUser], ADException + FullyQualifiedErrorId : 服务器返回以下错误:无效的枚举上下文。,Microsoft.ActiveDirectory.Management.Commands.GetADUser
      • 它以 CSV 格式返回数据,但对经理没有任何内容。有什么想法吗?
      • 感谢您的解释,但这里有一个错字;它应该是 Expression={(Get-ADUser $_.Manager).sAMAccountName 。使用错误的名称,它将返回一个空字符串。
      【解决方案3】:
      Get-ADUser -Filter * -Properties Name,SamAccountName,AccountExpirationDate,Manager | select Name,SamAccountName,AccountExpirationDate,@{N='Manager';E={(Get-ADUser $_.Manager).sAMAccountName}} | Export-Csv "Userdata.csv"
      

      【讨论】:

      • 您应该格式化此代码并添加解释如何回答问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多