之前我尝试制作一个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
答案 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