请各位帮我解决以下问题。这是我想要完成的。
我生成一份需要在AD = file1.txt中禁用的计算机的报告
我预先制作了要排除的计算机列表 从被禁用= file2.txt
这是我到目前为止所拥有的
$toBeDisabled = Import-CSV \\SERVER\file1.csv
$ toBeExcluded = Import-CSV \ SERVER \ file2.csv
$ toBeDisabled = $ toBeExcluded | Where-Object {($ toBeExcluded | Select-Object -ExpandProperty Name)-NotContains $ _.Name}
ForEach($ toBeDisabled.DeviceName中的$ Computer)
{ $ Computer = $ Computer.Trim()
$ADComputer = Get-ADComputer $Computer -Properties Description
如果($ ADComputer)
{ 添加内容c:\ temp \ computers.log -Value"已找到并禁用以下PC $计算机"
Set-ADComputer $ ADComputer -Description" $($ ADComputer.Description) - 由于不活动而禁用 - $(Get-Date) - $ env:UserName" -Enabled $ False
}
否则
{Add-Content c:\ temp \ computers.log -Value" $在Active Directory中找不到计算机或在&#34之前被禁用;
}
}
我收到以下错误(Select-Object:Property" Name"找不到)
谢谢
答案 0 :(得分:0)
这里最好的方法是首先比较这两个文件:
$toBeExcluded = Import-Csv C:\temp\file2.csv
$toBeDisabled = $toBeExcluded | Where-Object {($toBeExcluded | Select-Object -ExpandProperty Name) -NotContains $_.Name}
以上假设file2.csv
具有相同的格式(因此它具有属性Name
)。
然后,您只需在$Computers
中使用$toBeDisabled
,而不是foreach
。
答案 1 :(得分:0)
我知道了。
比较对象$ file1 $ file2-属性“ DeviceName” | 其中SideIndicator -eq“ <=” | 选择设备名称| Export-Csv“ \ Server \ DisableList.csv” -NoType
感谢大家的帮助