Get-ADUser - 未找到数据时为 CSV 文件输出一个空行

Get-ADUser - output a blank line fo CSV file when no data is found

我(从各种在线资源)拼凑了一个脚本,可以 return 从 CSV 文件中获取有关 AD 用户的数据。它可以清楚地标记何时未找到用户,但也许对我来说同样重要的是一种在输入 CSV 文件也有空白时向 CSV 文件输出空白行的方法。这将在 Excel 中节省很多时间,以确保所有空白行彼此对应(以及随后找到用户数据的位置)。一对一比较是目标。

这是我的...

$ImportCSV = "C:\Users\x\Desktop\testCSV_in.csv"


$Names = Import-Csv -Path $ImportCSV

$Results = foreach ($Name in $Names) {
    $filter = $Name.samAccountName
    
    $User = Get-ADUser -Filter "SamAccountName -like '$filter'" -Properties Samaccountname, Givenname, Surname, EmailAddress, Name

    #blank lines input CSV
    if ( $User.SamAccountName -eq ""  ) {
        # please help
    }

    # found user
    if ( $User ) {
        $User |
        Select-Object -Property Samaccountname, Givenname, Surname, EmailAddress, Name            
    }

    # not found user
    else {
        [pscustomobject]@{
            SamAccountName = 'MISSING ACCOUNT'

        }
    }
}

$Results | Export-Csv -Path "C:\Users\x\Desktop\testCSV_out.csv" -NoTypeInformation -Encoding UTF8

我能为 $User.SamAccountName -eq "" 想到的所有可能组合只是 return 返回一个 CSV 文件,该文件没有反映我故意引入的差距(模拟真实用例)。

我敢肯定,只需要一行或两行代码。谢谢

如果您想要规范化的导出,您需要一个规范化的对象,这意味着,所有行的 CSV 的所有列都必须存在,即使它们是 $null。试试这个代码,看看它是否有效:

$ImportCSV = "C:\Users\x\Desktop\testCSV_in.csv"
$Names = Import-Csv -Path $ImportCSV

$Results = foreach ($Name in $Names)
{
    $filter = $Name.samAccountName
    $hashFilter=@{
        Properties='Samaccountname', 'Givenname', 'Surname', 'EmailAddress', 'Name'
        Filter="SamAccountName -like '$filter'"
    }
    $User = Get-ADUser @hashFilter

    if(-not $user)
    {
        $user=@{samAccountName='User Not Found on AD'}
    }
    if(-not $filter)
    {
        $user=@{samAccountName='User Not Found on CSV'}
    }

    [pscustomobject]@{
        Samaccountname=$User.samAccountName
        Givenname=$User.GivenName
        Surname=$User.SurName
        EmailAddress=$User.EmailAddress
        Name=$User.Name
    }
}

$Results | Export-Csv -Path "C:\Users\x\Desktop\testCSV_out.csv" -NoTypeInformation -Encoding UTF8

编辑:Import-Csv,与ConvertFrom-Csv相同,将跳过空行。必须至少填充一列。看到第4行和第9行被跳过了,但是第11行没有: