【问题标题】:How to get AD user that does not have Picture如何获取没有图片的AD用户
【发布时间】:2014-12-18 20:32:43
【问题描述】:

我正在尝试获取没有图片的 AD 用户列表。我在 QBC.CAN 域并试图从 KOBAL 域获取信息。 KOBAL 域看起来像这个 KOBAL.COM。有称为 SALES 的 OU 和称为 NORTHWEST 的子 OU。

我的工作是获取包含姓名、职务、电子邮件的用户列表,其中不存在图片。 thumbnailPhoto 是 ldap 显示名称。我尝试了几个查询,但它没有给我我需要的东西并且不断出错。

Get-ADUser -Filter * -Server "ADCP12WSDC54X01.KOBAL.COM" -properties thumbnailPhoto | ? {!$_.thumbnailPhoto} | select Name

此代码有效,但我不需要整个列表。我只需要 OU=SALES,OU=NORTHWEST。如果我将脚本更改为以下,则会出现错误

Get-ADUser -Filter * -SearchBase "OU=NORTHWEST, OU=SALES ,DC=KOBAL,DC=COM" -properties thumbnailPhoto | ? {!$_.thumbnailPhoto} | select Name

Get-ADUser : The supplied distinguishedName must belong to one of the following
 partition(s): 'DC=QBC,DC=CAN , CN=Configuration,DC=QBC,DC=CAN , cN=Schema,CN=Configuration,DC=QBC,DC=CAN , DC=DomainDnsZones,DC=QBC,DC=CAN, DC=ForestDnsZones,DC=QBC,DC=CAN'.

【问题讨论】:

  • 专有名称非常敏感。它们需要像在对象中那样完全地出现。在这里,应该是"OU=NORTHWEST,OU=SALES,DC=KOBAL,DC=COM"。此外,您的Where-Object 可能正在测试$_.thumbnailPhoto -ne $null。
  • 我尝试了您的建议,但现在看来它正在切换到 kobal.com 域控制器。我收到与我发布的相同的错误。任何其他想法。我可以使用 -server 语法,但如果我使用 -server 语法,我不确定如何传递确切的 OU。
  • 我在 QBC.can 中使用了相同的语法,它可以工作。我可以使用 AD 用户和计算机 UI 导航到 kobal.com。

标签: powershell active-directory


【解决方案1】:

这是我会使用的:

$SearchBase = 'OU=NORTHWEST,OU=SALES,DC=KOBAL,DC=COM';
$LdapServer = 'YourLDAPServerName';

$UsersWithoutPhotos = Get-ADUser -Filter 'thumbnailPhoto -notlike "*"' -SearchBase $SearchBase -SearchScope 'Subtree' -Server $LdapServer | Select-Object 'Name'

这里的过滤器不需要通过管道连接到Where-Object。它将返回目标 OU 或以下没有 thumbnailPhoto 属性的任何用户。您现在不需要-Properties thumbnailPhoto,因为您不再将它用于任何事情,因此您不会返回所有这些数据。


编辑添加:

默认情况下,Get-ADUser 返回的唯一属性是 DistinguishedName、Enabled、GivenName、Name、ObjectClass、ObjectGUID、SamAccountName、SID、Surname、UserPrincipalName。如果您想访问其他任何内容,则需要再次包含 -Properties 参数和 Get-ADUser 以告诉该命令也获取该数据。 Select-Object 命令所做的只是消除您不想看到的字段。

这应该适合你:

$UsersWithoutPhotos = Get-ADUser -Filter 'thumbnailPhoto -notlike "*"' -SearchBase $SearchBase -SearchScope 'Subtree' -Server $LdapServer -Properties 'title', 'displayName';

然后您可以将其限制为您想要的字段:

$UsersWithoutPhotos = $UsersWithoutPhotos | Select-Object 'Name','title', 'displayName';

或者按字段排序:

$UsersWithoutPhotos = $UsersWithoutPhotos | Sort-Object 'displayName';

并显示它:

$UsersWithoutPhotos | Format-Table -AutoSize;

或者:

$UsersWithoutPhotos | Out-GridView;

当然,您也可以在一条线上完成所有这些操作,并且只需保持管道即可。

【讨论】:

  • 当然,这完全取决于您要查找的内容。我只是使用了Select-Object 'Name',因为这就是你使用的。
  • 我在上面添加了解释。
  • 太棒了。谢谢培根片。完美的。奇迹般有效。感谢您对我的帮助和耐心。
  • 优秀。您可能想使用Export-Csv -Path "c:\UsersWOPic.csv" -NoTypeInformation。这将摆脱 #TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser 或第一行类似的废话。
  • 培根:你太慷慨了。这个脚本也帮助了我。好问题 ST。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
相关资源
最近更新 更多