如何使用 Powershell 显示用户的 OU

Gil*_*rem 2 powershell active-directory

我正在尝试编写一个脚本来分别显示用户特定的属性、名称、邮件地址、OU。输出符合预期,但是我找不到任何解决方案来仅提取和显示用户的 OU 详细信息。当我选择“DistinguishedName”时,响应如下模式:{CN = X, OU = Y, DC = Z},我只想显示 OU。iv'e 试图找到一种方法来分割 DN 字符串,但到目前为止还没有什么乐趣。

提前致谢

Set-ExecutionPolicy Unrestricted 
$filepath = "C:\Users\Administrator\Desktop\ADusers.Csv"
$searchDomain = "DC = GSDOM, DC=internal"
$adminCredential = Get-Credential
$adSrv = 'GSDC'
$session = New-PSSession -ComputerName "$adSrv" -Credential ($adminCredential)
Invoke-Command $session -Scriptblock { Import-Module ActiveDirectory }
Import-PSSession -Session $session -module ActiveDirectory
Get-ADUser -Filter * -Properties * | Select-Object "Name", "EmailAddress", "distinguishedName"
Run Code Online (Sandbox Code Playgroud)

Adm*_*ngs 5

一种有效的方法是从以下位置导出 OU DistinguishedName

Get-ADUser -Filter * -Properties Mail |
    Select Name,Mail,DistinguishedName,@{n='OU';e={$_.DistinguishedName -replace '^.*?,(?=[A-Z]{2}=)'}}
Run Code Online (Sandbox Code Playgroud)

这利用了计算属性,可以在Select-Object中找到这些属性。

-replace使用不区分大小写的正则表达式进行匹配。由于我们没有包含替换字符串,因此匹配的文本只是被删除。-creplace是区分大小写的版本。有关正则表达式的详细信息,请参阅正则表达式。

使用它并不明智,-Properties *因为这可能会从远程服务器返回大量数据。由于您也在使用-Filter *,这意味着您将返回所有用户的所有属性。它非常慢并且资源有限。