使用 Powershell/CLI 从 Active Directory 中仅获取用户 OU

使用 Powershell/CLI 从 Active Directory 中仅获取用户 OU

我只想获取OU特定用户的信息。

例如,该命令应该显示OU用户JOHN 所属的类别:

USERNAME = OU_NAME

答案1

如果您没有安装 AD 模块,您也可以使用它。我发现当我运行需要 AD 信息但没有安装 AD 模块的脚本时,它非常有用。:

$strFilter = "(&(objectCategory=User)(samAccountName=$env:username))"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter
$objPath = $objSearcher.FindOne()
$objUser = $objPath.GetDirectoryEntry()
$DN = $objUser.distinguishedName
$ADVal = [ADSI]"LDAP://$DN"
$WorkOU = $ADVal.Parent
$WorkOU

现在$WorkOU将返回一个像这样的字符串LDAP://OU=userou,OU=userou2,DC=internal,DC=domain,DC=com,您可以按照您想要的任何方式进行过滤。

答案2

这对我有用:

$user = Get-ADUser -Identity [USERNAME] -Properties CanonicalName

$userOU = ($user.DistinguishedName -split ",",2)[1]

来源:http://itknowledgeexchange.techtarget.com/powershell/discovering-a-users-ou/

答案3

Get-ADPathname.ps1 脚本为此提供了一种非常简单的技术,不需要字符串解析:

PS C:\> (Get-ADUser kendyer).DistinguishedName | Get-ADPathname -Format X500Parent
OU=Sales,DC=fabrikam,DC=com

(正如文章中所述,字符串解析并不强大。)

答案4

有时名称中包含逗号。我发现的最佳解决方案是这个:

$user = Get-ADUser -Identity [USERNAME] -Properties CanonicalName
$userOU = "OU="+($user.DistinguishedName -split ",OU=",2)[1]

相关内容