【问题标题】:How to merge multiline info property from Active Directory using PowerShell如何使用 PowerShell 从 Active Directory 合并多行信息属性
【发布时间】:2021-04-16 04:23:23
【问题描述】:

我需要使用帐户的 Samaccountname 和 MS AD 中的信息创建 CSV 文件(每个 AD 帐户一行),然后将 CSV 文件中的数据加载到 SQL 表中。 许多帐户在 AD 中具有多行 Info 属性,如下所示: PS SQLSERVER:> $InfoCheckInfo
####00123

Task9009- no valid feed - 9/10/14
Disabled due to feed 9-12-2014

Feed updated, 9-15-2014

PS SQLSERVER:\> 

多行信息属性可以包含空行。

我的解决方案: 第1步。 $Result= $(Get-ADUser $adUserCheck -Properties * | 选择 SamAccountName) $Result=aaa123

步骤 2。 我替换了空行并合并数据: PS SQLSERVER:> $InfoCheckInfo = $(Get-ADUser $adUserCheck -Properties info | Select-Object - ExpandProperty info) - 替换“`n”、“;”

PS SQLSERVER:\> $InfoCheckInfo
####00123;;;Task9009- no valid feed - 9/10/14;Disabled due to feed 9-12-2014;;Feed updated, 9-15-2014

第 3 步。 $结果 |添加成员 -NotePropertyName 信息 $InfoCheckInfo 第四步。 $结果 | export-csv -Delimiter '~' "D:\test\ad_user_info.csv" -notype

问题是如果 Info 有 multiline 属性,CSV 文件会创建四行数据,如下所示:

aaa123 ####00123;;;
Task9009- no valid feed - 9/10/14;
Disabled due to feed 9-12-2014;;
Feed updated, 9-15-2014

每个帐户我需要一行- aaa123 ####00123;;;Task9009- 没有有效的提要 - 2014 年 9 月 10 日;由于提要 2014 年 9 月 12 日已禁用;;提要已更新,2014 年 9 月 15 日

请帮忙, 谢谢

【问题讨论】:

    标签: powershell


    【解决方案1】:

    我个人会首先过滤掉所有需要导出的用户对象,然后在 1 行中构建 PowerShell 对象。 您可以使用 Foreach 循环以长格式重写相同的内容

    另外注意,我在 StreetAddress 中对多行进行了快速测试,使用的换行符是

    `r`n
    

    所以你应该在替换中使用它。

    这对我有用(为您的用例使用适当的过滤器)

    Get-ADUser -Filter * -Properties info | 
    select SamAccountName, @{N="CheckInfo"; E={$_.Info.replace("`r`n", ";")}} | 
    export-csv D:\test\ad_user_info.csv -NoTypeInformation -Delimiter '~'
    

    【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多