获取不在指定组中的计算机

时间:2016-07-08 12:58:25

标签: powershell

我尝试了几种不同的方式,由于某种原因,它继续给我指定组中的计算机,但似乎无法找出原因。

$Windows_10_Computers_GPO = Get-ADComputer -Filter 'OperatingSystem -eq "Windows 10 Pro"' -SearchBase "OU=site,OU=US,DC=americas,DC=ad,DC=company,DC=com" -Properties MemberOf | Where-Object {$_.MemberOf -notlike "*site-DG-Windows_10*" }

以上代码返回Windows 10和组中的所有计算机。不是预期的。那么我尝试了下面的代码和相同的结果。

$Windows_10_Computers_GPO = Get-ADComputer -Filter 'OperatingSystem -eq "Windows 10 Pro"' -SearchBase "OU=site,OU=US,DC=americas,DC=ad,DC=company,DC=com" -Properties MemberOf

Foreach ($Computer in $Windows_10_Computers_GPO) {
    if ($Computer.MemberOf -notlike "*site-DG-Windows_10*") {
        $Email_Body = $Email_Body + $Computer.Name + "<br>"
        Add-ADGroupMember -Identity site-DG-Windows_10 -Members $Computer | Out-Null
    }
}

基本上我正在尝试查找特定OU中的所有Windows 10 Pro计算机,如果它们不在该组中,则将它们添加到特定组中。

2 个答案:

答案 0 :(得分:0)

没有经过测试应该工作

$Windows_10_Computers_GPO = Get-ADComputer -Filter 'OperatingSystem -eq "Windows 10 Pro"' -SearchBase "OU=site,OU=US,DC=americas,DC=ad,DC=company,DC=com" | where {$.memberof -notContains 'site-DG-Windows_10'} | Format-Table Name
Foreach ($Computer in $Windows_10_Computers_GPO) {
        $Email_Body = $Email_Body + $Computer.Name + "<br>"
        Add-ADGroupMember -Identity "site-DG-Windows_10"
    }

如果不想添加电子邮件正文添加

Get-ADComputer -Filter 'OperatingSystem -eq "Windows 10 Pro"' -SearchBase "OU=site,OU=US,DC=americas,DC=ad,DC=company,DC=com" -Properties MemberOf | Where-Object { $_.memberOf -notcontains 'site-DG-Windows_10' } | Add-ADGroupMember "site-DG-Windows_10"

答案 1 :(得分:0)

答案最终让变量出错了。

Get-ADComputer -Filter 'OperatingSystem -eq "Windows 10 Pro"' -SearchBase "OU=site,OU=US,DC=americas,DC=ad,DC=company,DC=com" -Properties MemberOf | Where-Object { "CN=site-DG-Windows_10,OU=GPOs,OU=Groups,OU=site,OU=US,DC=americas,DC=ad,DC=company,DC=com" -NotIn $_.memberof } | Select Name,Memberof

最终