【问题标题】:Powershell export AD users to csvPowershell 将 AD 用户导出到 csv
【发布时间】:2017-01-17 11:05:14
【问题描述】:

我正在尝试通过 powershell 将 AD 用户导出到 csv 文件。现在一个字段只需要具有值的第一个字母。例如:姓名 - Kevin,姓名首字母 - K。

我已经尝试过使用子字符串,但我显然做错了什么:

PS C:\Users\Administrator> Get-ADUser -Filter * -Properties * | Select -Property substring.surname(1,1),surname,givenName,samaccountname,givenN
ame,Mail,Department | Export-CSV "C:\Export\Users.csv" -NoTypeInformation

显然我对 powershell 还是很陌生。

【问题讨论】:

    标签: powershell active-directory export export-to-csv


    【解决方案1】:

    这里有几个问题:

    1) 您选择了两次“GivenName” - PowerShell 不允许这样做:

    2) 你想要子字符串 (0,1) - 从位置 0 开始,然后计数 1 个字母。

    3) 这应该做你想做的事:

    Get-ADUser -Filter * -Properties * | `
    Select @{n='initial';e={$_.surname.substring(0,1)}},surname,givenName,samaccountname,Mail,Department | `
    Export-CSV "C:\installs\Users.csv" -NoTypeInformation
    

    本质上,您每次都在创建和回收一个小型属性数组 - 它允许您设置一个值(子字符串),然后将其沿链返回到选择,然后返回到您的 CSV 文件:)

    (可能还值得注意,您正在选择姓氏的第一个字母,但在您的问题中,您要求从 Kevin 获取 K - 您可能希望从名字字段中进行选择)。


    其他说明:

    -filter * -properties * 的计算成本非常高 - 您将获得所有用户的所有字段并且只选择少数几个。尝试以与您在选择中相同的方式列出属性。

    select -property - -property 开关是多余且可选的 - 只需使用 Select stuff,otherstuff 即可完成相同的操作,并且更易于阅读

    【讨论】:

    • 我认为鼓励速记并不是最好的建议。 Select-Object -Property 将完成。这也有助于更好地理解您要求 PowerShell 执行的什么;从被送入管道的对象中选择一组属性。没有它,如果/何时 OP 离开公司,初学者/审查脚本的人可能会有点不清楚,因为它需要 PowerShell 速记以及可选和默认位置参数的知识。代码“更容易”阅读是主观的,但技术上的完整则不是。只是我的 2c,无论如何都赞成:)
    【解决方案2】:

    如果你觉得流程比较枯燥,也可以试试 CJWdev 工具或 Lepide 活动目录查询工具。它们都是免费的,有助于快速获取此类广告报告。

    【讨论】:

    • 这更多的是评论而不是上面发布的问题的答案
    猜你喜欢
    • 2014-01-23
    • 2015-08-10
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多