PowerShell CSV不导出丢失的Active Directory对象

时间:2017-03-17 00:23:38

标签: powershell csv active-directory

之前我尝试制作一个PowerShell脚本,将文本文件中的资产标签与AD中的计算机名称进行比较,这是成功的。但是,当在AD中找不到资产时,它只是跳过该行并继续前进到下一行。无法找到的资产不会导出到CSV文件中。

有没有办法让它在CSV文件中打印缺少的资产,以及"资产未找到"资产标签旁边?我尝试使用这一行,但所有这一切都是在行之间添加空格。

if ($_.samaccountname -notlike "*$line*") {"Asset does not exist in AD"}

代码:

Import-Module ActiveDirectory

   [Array]$Collection = foreach($line in Get-Content H:\AssetNames.txt)  {
        Get-ADComputer -Filter * -Property Description | Where {$_.samaccountname -Like "*$line*"} | Select Name, Description
        #if ($_.samaccountname -notlike "*$line*") {"Asset does not exist in AD"}
    }

$Collection | Export-Csv C:\test.csv -NoTypeInformation

1 个答案:

答案 0 :(得分:0)

您的问题是,您要排除Get-ADComputer过滤器中不匹配的资产,因此您无法知道它们何时不匹配。如果对变量执行此操作,则可以检查:

Import-Module ActiveDirectory

   [Array]$Collection = foreach($line in Get-Content H:\AssetNames.txt)  {
        $Match = Get-ADComputer -Filter * -Property Description | Where {$_.samaccountname -Like "*$line*"} | Select Name, Description
        if (!$Match) {
            "Asset $($_.samaccountname) does not exist in AD" | Out-File -FilePath "ErrorLog.txt" -Append
        } else {
            Write-Output $Match
        }
    }

$Collection | Export-Csv C:\test.csv -NoTypeInformation