2017-10-20 81 views
0

我是Powershell首发。我一直在尝试创建一个脚本,该脚本会生成包含DistinguishedName的一些AD信息的Excel文件。我的脚本是这样的:如何将Powershell中的AD信息分解为Excel文档?

$dn = Get-ADUser -Filter * -SearchBase "OU=Users,OU=Ch01,OU=EU,DC=corp,DC=ads" | select DistinguishedName,SamAccountName,name |export-csv C:\temp\test1.csv -Delimiter ";"

是我所得到的一个例子(注:|意味着在Excel单元格):

CN=Testuser\, Verfluecht,OU=Users,OU=Ch01,OU=EU,DC=corp,DC=ads | vtestuser | Testuser, Verfluecht 

但为了在Excel的路径,我需要它没有CN(CN = Testuser \,Verfluecht,) 因此,它看起来像这样:

OU=Users,OU=Ch01,OU=EU,DC=corp,DC=ads | vtestuser | Testuser, Verfluecht 

我该怎么做?

我尝试了很多东西,如.substring和替换,但我无法完成它。

回答

0

使用此link和一个计算出的属性,它应该删除专有名称的第一部分,并留下您需要的部分。

Get-ADUser -Filter * -SearchBase "OU=Users,OU=Ch01,OU=EU,DC=corp,DC=ads" | 
Select-Object @{Name="DistinguishedName";Expression={$_.distinguishedname | ForEach-Object {$_ -replace '^.+?(?<!\\),',''}}},samaccountname,name | 
Export-Csv C:\temp\test1.csv -Delimiter ";" 

在我的测试环境中,我得到了下面的输出(没有将它输出到Export-Csv)。

Get-ADUser -Filter * | Select-Object @{Name="DistinguishedName";Expression={$_.distinguishedname | ForEach-Object {$_ -replace '^.+?(?<!\\),',''}}},samaccountname,name 

DistinguishedName   samaccountname name   
-----------------   -------------- ----   
CN=Users,DC=timhaintz,DC=com Administrator Administrator 
CN=Users,DC=timhaintz,DC=com Guest   Guest   
CN=Users,DC=timhaintz,DC=com DefaultAccount DefaultAccount 
CN=Users,DC=timhaintz,DC=com krbtgt   krbtgt  

谢谢,Tim。