首页 > 解决方案 > GET-ADUSER 到 .CSV 文件中,但在单个列中的 distinctName

问题描述

经过数小时的尝试并阅读了这里几乎所有的帖子,我找不到我需要的解决方案。

我想检索广告用户,但只检索特定字段。像这样的东西:

Area | Enabled | Name | userPrincipalName(email)

问题是,该字段DistinguishedName包含我需要的所有内容,但是当我将其导出为 .CSV 时,它被分成不同的列。

在此处输入图像描述

我只能阅读这一行并将其分隔在我需要的列中,但是我遇到了另一个问题,即有些用户的 OU 数超过了 2、3、4。

有没有办法阅读,比如只有一个 OU(第一个是我需要的,因为它说 IT、EXPEDITION、ETC)或至少将 CN 作为一个字段,OU 作为另一个字段,然后是 name、email 。 ..?

我创建此代码以在 PowerShell 上运行:

Get-ADUser -Filter * -Properties DistinguishedName,SamAccountName,DisplayName,EmailAddress,OfficePhone | Select-Object DistinguishedName,EmailAddress,OfficePhone,DisplayName,SamAccountName | export-csv -path path\to\adusers.csv -NoTypeInformation -Encoding "UTF8"

然后我将它导入 SQL Server。

标签: sql-serverpowershellactive-directory

解决方案


我使用它的方法是在代码的选择对象部分创建一个自定义属性。例如:

Get-ADUser -Filter * -Properties DistinguishedName,SamAccountName,DisplayName,EmailAddress,OfficePhone | Select-Object DistinguishedName,EmailAddress,OfficePhone,DisplayName,SamAccountName

会成为

Get-ADUser -Filter * -Properties DistinguishedName,SamAccountName,DisplayName,EmailAddress,OfficePhone | Select-Object @{Label='DistinguishedName';expression={$_.DistinguishedName.Split(',')[1]}},EmailAddress,OfficePhone,DisplayName,SamAccountName

@{Label = 'DistinguishedName';Expression={$_.Distinguishedname.split(',')[1]}}这就是在管道中创建自定义属性的方式,所以这里我们说我想要一个自定义属性,标签是属性的名称,表达式是我们想要的属性,所以在这种情况下,我们想要管道中的当前专有名称,$_.DistinguishedName但随后我们想将其拆分,,因为这是将 DistinguishedName 的各个部分彼此分开的原因,因此我们使用.split(',')您在要拆分的字符中输入的方法。现在根据您的问题,您只对专有名称字段中的第一个 OU 感兴趣,因此我们选择.split(',')使用数组中[1]的第一个对象创建的数组中的第二个对象将是 CN= 条目。这将为您提供如下所示的内容。 在此处输入图像描述

然后您可以将其导出为 CSV

链接到自定义属性的更多信息https://4sysops.com/archives/add-a-calculated-property-with-select-object-in-powershell/


推荐阅读