gpt4 book ai didi

csv - 仅查询非空值并重命名字段?

转载 作者:行者123 更新时间:2023-12-03 01:13:37 25 4
gpt4 key购买 nike

这是我想做的事情:

  • 在AD中查询一些属性,仅列出DisplayName不为空的属性。
  • 使用查询的所有字段保存到CSV
  • 消除CSV文件的第一行,然后重命名所有列名称。

  • 这是我目前拥有的:
    Get-AdUser -Filter * -Properties DisplayName, Memberof |
    select DisplayName, Memberof |
    Export-Csv ********

    这里是问题:
  • MemberOf字段显示在下面,但现在显示的是真实的组名:
    Microsoft.ActiveDirectory.Management.ADPropertyValueCollection
  • 我似乎找不到找到将列名替换为我希望将其命名为“名称”,“组”等的方法。
  • csv文件的第一行包含以下内容:
    #TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser

  • 是否有快速解决方案?

    最佳答案

    此处需要学习的关键概念之一是calculated properties。这使您可以在对Select进行编码时即时修改数据,使其对脚本中的总体目标(无论可能是什么)更加有用。

    因此,对于您的问题:

  • 这是因为memberOf不是简单的字符串,它具有自己的.NET类型的Microsoft.ActiveDirectory.Management.ADPropertyValueCollection。要扩展该值,请在select语句中使用此计算出的属性
    select displayName, @{name="MemberOf"; expression={$_.memberof -join ";"}}
  • 再次,您可以使用计算所得的属性。假设您想将“displayName”更改为“Display Name:”。您将使用类似:
    select @{name="Display Name";expression={$_.displayName}}, @{name="MemberOf"; expression={$_.memberof -join ";"}}
  • 在导出CSV开头以删除该#TYPE声明时,请将-NoTypeInformation参数添加到Export-Csv cmdlet。所以:
    Export-csv -NoTypeInformation "myfile.csv"

  • 另外,如果只希望没有空displayName的用户,则可能需要更改初始 Get-AdUser上的过滤器。就像是:
    Get-AdUser -Filter {DisplayName -ne ''} -Properties DisplayName, Memberof

    关于csv - 仅查询非空值并重命名字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34499754/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com