只查询非空值并重命名字段?

时间:2015-12-28 19:47:20

标签: csv powershell active-directory

这就是我想要做的事情:

  1. 查询AD中的一些属性,仅列出package.json不为空的属性。
  2. 保存到CSV并查询所有字段
  3. 删除CSV文件的第一行,然后重命名所有列名称。
  4. 以下是我目前的情况:

    DisplayName

    以下是问题:

    1. Get-AdUser -Filter * -Properties DisplayName, Memberof | select DisplayName, Memberof | Export-Csv ******** 字段显示在以下内容上,但现在显示真实的组名称:

      MemberOf
    2. 我似乎无法找到将列名替换为“名称”,“组”等名称的方法。

    3. csv文件的第一行包含以下内容:

      Microsoft.ActiveDirectory.Management.ADPropertyValueCollection
      
    4. 有机会快速解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

这里要学习的关键概念之一是calculated properties。这使您可以在Select时动态修改数据,使其对脚本中的总体目标更有用(无论可能是什么)。

所以对于你的问题:

  1. 这是因为memberOf不是一个简单的字符串,它拥有自己的.NET类型Microsoft.ActiveDirectory.Management.ADPropertyValueCollection。要扩展该值,请在select语句

    中使用此计算属性
    select displayName, @{name="MemberOf"; expression={$_.memberof -join ";"}}
    
  2. 同样,您可以使用计算属性。假设您要将“displayName”更改为“显示名称:。您将使用类似:

    的内容
    select @{name="Display Name";expression={$_.displayName}}, @{name="MemberOf"; expression={$_.memberof -join ";"}}
    
  3. 导出CSV以在开头删除#TYPE声明时,请将-NoTypeInformation参数添加到Export-Csv cmdlet。所以:

    Export-csv -NoTypeInformation "myfile.csv"
    
  4. 此外,如果您只希望用户没有空的displayName,则可能需要更改初始Get-AdUser上的过滤器。类似的东西:

    Get-AdUser -Filter {DisplayName -ne ''} -Properties DisplayName, Memberof
    

答案 1 :(得分:0)

还发现了这个QUEST AD工具包。从戴尔网站下载,然后只需添加PASSnapin Quest.ActiveRoles.ADManagement。这对我们来说更容易查询任何AD相关数据。