我们有一个很大的审计,我们希望确保所有被称为员工的AD计算机帐户已被停用。我有一个.csv,它具有我们使用的唯一标识符 - 我们的模式在AD计算机名称属性中包含该ID。我正在将导入的csv对象及其属性正确地布置到过滤器上,遇到了很大的麻烦。我认为。我不完全确定。这就像我一直在尝试的东西。来自import-csv头痛的Powershell管道对象
Import-Csv termname.csv | ForEach-Object
{ Get-ADComputer -Filter { Name -Contains "$($_.id)" } } |
Export-Csv termcomp.csv -NoTypeInformation
这个“剧本”一共有没有内容的拉升,虽然我知道,当我测试
Get-ADComputer -Filter { Name -Contains $id }
其中$id
是唯一的ID,我得到AD计算机对象命中。同样,测试此块
Import-Csv termname.csv | ForEach-Object { Get-ADComputer { Name -Contains $_.id }
PowerShell的错误是:
..."Property 'id' not found in object of type: 'System.Management.Automation.PSCustomObject'.
我认为我misapprehending什么恰恰是一个“对象”,在这种情况下。整个导入的数组是一个对象,其属性为.id?或者是每行都有自己的对象,具有.id属性?无论如何,为什么PowerShell会对管道对象产生如此强烈的反对意见?毕竟这是其主要工作?
是否有一个完全更好的方法去完成整个过程?我以某种方式去颠覆整个混乱?
UPDATE
作为csv文件的请求,样本内容。建议使用通配符代替,我已将通配符放入.csv本身,这也可能不是最优雅的解决方案。但只要它有效!这里的样品,从记事本++
id
*rstarr56*
*jlennon58*
*pmcartney74*
*gharrison68*
你能不能请分享CSV文件的内容。至少有一些值,以便我们可以看到内容是如何在PowerShell中实现的。 ? –
我看到的大问题是包含的使用,这是用于测试的项目在集合中。简单的答案是使用like和*通配符。 – BenH