【发布时间】:2014-05-06 15:51:28
【问题描述】:
现在我有一个脚本,它使用 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 属性仅在我需要的只是结果中的第一个 CN 时才提供 FQDN(可分辨名称)。例如,在下面的例子中,我需要在 ManagedBy 下显示的是“testuser”。没有 CN= 或 DC= 可分辨名称路径。
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。
【问题讨论】:
标签: powershell select csv active-directory formatting