首页 > 解决方案 > 在 Powershell For 循环中保留换行符

问题描述

我有一个 DisplayNames 列表,我不想查找每个 SamAccountNames,但是当我没有找到 SamAccountName 时,我想保留一个空行。现在,当我针对我的 400 个 DisplayNames 列表运行它时,输出只有 350 个,但我不知道我的列表中缺少的 50 个在哪里。我现在拥有的是:

Get-Content C:\list.txt | ForEach-Object {(Get-ADUser -Filter {DisplayName -eq $_}).SamAccountName}

我在其他确实产生空行的命令中使用了类似的语法,但据我所知,使用-Filter似乎改变了一些导致空行不再存在的方式。

所以,而不是这样的事情:

jonesb
williamsj

bakere

我得到:

jonesb
williamsj
bakere

标签: powershell

解决方案


400 DisplayNames 减去 350 SamAccountNames 得到 10?

我更喜欢看到无法评估 SamAccountName 的 DisplayName 的输出。

$Data = foreach ($DisplayName in (Get-Content C:\list.txt)){
    [PSCustomObject]@{
        DisplayName    = $DisplayName
        SamAccountName = (Get-ADUser -Filter "DisplayName -eq '$DisplayName'").SamAccountName
    }
}
$Data | Out-GridView
$Data | Export-Csv C:\list.csv -NoTypeInformation

推荐阅读