PowerShell脚本,用于排除在AD中禁用的计算机列表

时间:2018-06-14 05:02:46

标签: powershell

请各位帮我解决以下问题。这是我想要完成的。

  1. 我生成一份需要在AD = file1.txt中禁用的计算机的报告

  2. 我预先制作了要排除的计算机列表 从被禁用= file2.txt

  3. 我有一个禁用列表的脚本 从文本文件的计算机,但我想排除任何 存在于file2.txt。
  4. 中的计算机

    这是我到目前为止所拥有的

    $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"找不到)

    谢谢

2 个答案:

答案 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

感谢大家的帮助