AD中ManagedBy属性的Powershell Select语句格式化结果



现在我有一个脚本,它使用powershell收集用户组名和相关的ManagedBy属性。

$test = 'OU=example,DC=example,DC=test'
$test | ForEach {Get-ADGroup -Filter * -Properties ManagedBy -SearchBase $_ } |
Select Name, ManagedBy |
Sort -Property Name |
Out-File C:test.csv

结果通过但是managedby属性只提供FQDN(专有名称)当我需要的是结果中的第一个CN。例如,在下面的例子中,我需要在ManagedBy下显示的是"testuser"。No CN= or DC= distinguished name paths.

Name                                     ManagedBy                           
----                                     ---------                           
TestGroup_Modify             CN=testuser,CN=Users,DC=test,DC=domain,DC=com

我尝试了一些事情来使用"-replace"与一些格式的选择,但它最终删除了第一个CN。

Select -Property Name, @{n='ManagedBy';e={$_.ManagedBy -replace '^.+?,(CN|DC.+)','$1'}}

结果:

Name                                     ManagedBy                           
----                                     ---------                           
TestGroup_Modify             CN=Users,DC=test,DC=domain,DC=com   

有人知道格式化这些结果的方法吗?或者有使用组的ManagedBy属性的经验吗?我试图找出一种方法以某种方式将ManagedBy属性链接回用户SAMAccountName,但没有成功/缺乏powershell经验。(我认为这与查询检索ADGroups而不是ADUsers有关)事先感谢我在这方面收到的任何帮助。

最终目标是实现如下:

Name                                     ManagedBy                           
----                                     ---------                           
TestGroup_Modify                         testuser
更新*

啊,好的,在改变替换之后,我得到这样的结果:

Name                                     ManagedBy                                                
----                                     ---------                                                
TestGroup_Modify            testuser=Users,DC=test,DC=domain,DC=com

这很有用,因为它以CN开头,但因为每个ManagedBy用户都有

'=Users,DC=test,DC=domain,DC=com'
附加

,是否有可能从结果中过滤出这个字符串(因为所有的结果都有它),只留下用户CN,或者这将超出powershell的范围?谢谢你的帮助。

编辑*

下面是我写的:

$test = 'OU=example,DC=example,DC=test'
$test | ForEach {Get-ADGroup -Filter * -Properties ManagedBy -SearchBase $_} |
Select -Property Name, @{n='ManagedBy';e={$_.ManagedBy -replace '^CN=(.+?),(CN|OU.+)','$1'}} |
Sort -Property Name | 
Format-Table -Property Name, ManagedBy -Force -AutoSize |
Out-File C:test.csv

得到以下结果:

Name                                     ManagedBy                                                
----                                     ---------                                                
TestGroup_Modify            testuser=Users,DC=test,DC=domain,DC=com

正在寻找一种方法,如果可能的话,单独列出testuser

您的替换正则表达式不适合您要做的事情。

我用这个:

$_.ManagedBy -replace '^CN=(.+?),(?:CN|OU).+','$1'

ManagedBy将始终是一个用户DN,因此模式将是CN=username,后面跟着一个OU或另一个CN(如果它仍然在默认Users容器中)。

最新更新