【问题标题】:Get samaccountname from display name - but with extras从显示名称中获取 samaccountname - 但有附加功能
【发布时间】:2021-07-15 13:45:08
【问题描述】:

第一次发帖,但网站过去帮了我很多。

我们是 MSP,经常收到客户的请求,要求他们从他们发送给我们的用户列表中提取各种详细信息。不幸的是,尽管他们的列表很少(如果有的话)包含 AD 的任何唯一标识符,例如 samAccountName 甚至电子邮件。

因此,通常我只获取他们的名字和姓氏、职位等,并在下面使用轻微的变化来尝试获取所需的 samAccountNames 以在批量修改脚本中工作。

Get Samaccountname from display name into .csv

当我尝试将该输出放回表中以与显示名称对齐时,问题出现了(最近引起了很大的麻烦)。就好像脚本找不到显示名称一样,它只是移动到列表中的下一个并将 samAccountName 直接放在它找到的最后一个下方。使它与我放在旁边的 displayname 列不符。

我的问题是我可以在下面的脚本中添加一些内容,当发生错误时,它只需将 null 或类似内容输入到 samAccountName 输出 csv 中,这样我就可以在 Excel 工作表中轻松发现它。

类似地,一些用户有多个帐户,例如管理员和非管理员帐户,它们具有相同的显示名称但不同的 samAccountName,因此它会同时提取它们,这不是问题,但如果有任何方法可以让脚本我知道什么时候会发生?这对未来非常有用。

Import-Module activedirectory
$displayname = @()
$names = get-content "c:\temp\users.csv"
foreach ($name in $names) {


$displaynamedetails = Get-ADUser -filter { DisplayName -eq $name } -server "domain.local"| Select name,samAccountName

$displayname += $displaynamedetails

}

$displayname | Export-Csv "C:\temp\Samaccountname.csv"

【问题讨论】:

  • 您的 users.csv 文件真的只是显示名称的单列列表吗?

标签: powershell active-directory


【解决方案1】:

所以问题在于您依靠 Get-ADUser 为您提供用户对象,而当它没有时,您的输出中就会出现空白。相反,无论Get-ADUser 是否找到任何内容,您都需要为“csv”中的每个名称/行创建一个对象。

Get-Content 'c:\temp\users.csv' | 
    ForEach-Object {
        $name = $_
        $adUser = Get-ADUser -Filter "DisplayName -eq '$name'" -Server 'domain.local' 

        # Create object for every user in users.csv even if Get-ADUser returns nothing
        [PSCustomObject]@{
            DisplayName    = $name                     # this will be populated with name from the csv file
            SamAccountName = $adUser.SamAccountName    # this will be empty if $adUser is empty
        }
    } | Export-Csv 'C:\temp\Samaccountname.csv'

【讨论】:

  • 非常感谢丹尼尔,下次有机会我会试试的!
猜你喜欢
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 2014-05-19
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2020-03-02
相关资源
最近更新 更多