Powershell to remove-adgroupmembers 在文本文件中列出,其中要从中删除的组是通配符
Powershell to remove-adgroupmembers listed in a text file where the group for them to be removed from is a wildcard
我正在寻找一种方法来从任何文件中删除文本文件中列出的 AD 计算机
他们可能在同一个 OU 中的 AD 组。例如,文本文件包含:
计算机 1$
电脑2$
电脑3$
这三台计算机可能出现的组是:
第 1 组
第 2 组
第 3 组
我从 2016 年开始在 Whosebug 上从标题“PowerShell - Remove-ADGroupMember - 锁定我的管理员帐户”中找到这个并为我编辑:
Get-ADGroup-过滤器'name -like "Group*"' | Remove-ADGroupMember - 成员“Computer3$”
这可以很好地删除“Computer3$!但是当我尝试用 Foreach 中的变量替换“Computer3$”时,它会中断。这是我的代码:
$Comps = Get-Content "C:\Users\Administrator\Desktop\Complist.txt"
foreach ($comp in $comps) {
Get-ADGroup -filter 'name -like "Group*"' | Remove-ADGroupMember -Members "$Comps"
}
和错误:
Remove-ADGroupMember : Cannot find an object with identity: 'Computer1$
Computer2$ Computer3$' under: 'DC=Domain,DC=local'.
At line:3 char:53
+ ... name -like "Group*"' | Remove-ADGroupMember -Members "$Comps"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Computer1...mputer3$:ADP
rincipal) [Remove-ADGroupMember], ADIdentityNotFoundException
+ FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.Ac
tiveDirectory.Management.Commands.RemoveADGroupMember
任何帮助将不胜感激,提前致谢。
$Comps = Get-Content "C:\Users\Administrator\Desktop\Complist.txt"
foreach ($comp in $comps) {
Get-ADGroup -filter 'name -like "Group*"' | Remove-ADGroupMember -Members "$comp"
}
您在循环中引用了 $comps
(对象组)而不是 $comp
(对象)。
Import-Module -Name ActiveDirectory
$listofcomputers = Get-Content -Path "$env:HOMEDRIVE\Users\Administrator\Desktop\Complist.txt"
foreach ($computer in $listofcomputers) {
Get-ADGroup -Filter 'name -like "Group*"' | Remove-ADGroupMember -Members ('{0}' -f $computer)
}
更好的变量命名会有所帮助。
我正在寻找一种方法来从任何文件中删除文本文件中列出的 AD 计算机
他们可能在同一个 OU 中的 AD 组。例如,文本文件包含:
计算机 1$
电脑2$
电脑3$
这三台计算机可能出现的组是:
第 1 组
第 2 组
第 3 组
我从 2016 年开始在 Whosebug 上从标题“PowerShell - Remove-ADGroupMember - 锁定我的管理员帐户”中找到这个并为我编辑:
Get-ADGroup-过滤器'name -like "Group*"' | Remove-ADGroupMember - 成员“Computer3$”
这可以很好地删除“Computer3$!但是当我尝试用 Foreach 中的变量替换“Computer3$”时,它会中断。这是我的代码:
$Comps = Get-Content "C:\Users\Administrator\Desktop\Complist.txt"
foreach ($comp in $comps) {
Get-ADGroup -filter 'name -like "Group*"' | Remove-ADGroupMember -Members "$Comps"
}
和错误:
Remove-ADGroupMember : Cannot find an object with identity: 'Computer1$
Computer2$ Computer3$' under: 'DC=Domain,DC=local'.
At line:3 char:53
+ ... name -like "Group*"' | Remove-ADGroupMember -Members "$Comps"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Computer1...mputer3$:ADP
rincipal) [Remove-ADGroupMember], ADIdentityNotFoundException
+ FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.Ac
tiveDirectory.Management.Commands.RemoveADGroupMember
任何帮助将不胜感激,提前致谢。
$Comps = Get-Content "C:\Users\Administrator\Desktop\Complist.txt"
foreach ($comp in $comps) {
Get-ADGroup -filter 'name -like "Group*"' | Remove-ADGroupMember -Members "$comp"
}
您在循环中引用了 $comps
(对象组)而不是 $comp
(对象)。
Import-Module -Name ActiveDirectory
$listofcomputers = Get-Content -Path "$env:HOMEDRIVE\Users\Administrator\Desktop\Complist.txt"
foreach ($computer in $listofcomputers) {
Get-ADGroup -Filter 'name -like "Group*"' | Remove-ADGroupMember -Members ('{0}' -f $computer)
}
更好的变量命名会有所帮助。