我尝试了几种不同的方式,由于某种原因,它继续给我指定组中的计算机,但似乎无法找出原因。
$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计算机,如果它们不在该组中,则将它们添加到特定组中。
答案 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
最终