sql-server - 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。
解决方案
我使用它的方法是在代码的选择对象部分创建一个自定义属性。例如:
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/
推荐阅读
- python-2.7 - 以 10 为基数的 int() 的无效文字:'' 当提供空白输入时
- pdf - 以阿拉伯语作为文本输出 PDF
- php - Sylius 上的 Paypal REST 支付网关
- php - 检查数组中的 user_id
- docker - 在 RHEL 容器中安装“en_US”
- hadoop - hadoop v 2如何处理namenode的失败
- hibernate - 如何在休眠中删除子对象之前打破父子关系?
- css - 为什么 _partial 包含在 sass 中
- plugins - 使用 Apache Drill 从 Hive 访问表时出错
- java - Logback 不记录 JUL 精细级别