我确信一定有比我手动操作更简单的方法……
我正在尝试编写并运行一个 PowerShell 脚本,将 ProtectFromAccidentalDeletion 标志设置为“true”递归地在所有 OU、对象、子 OU 及其对象上。基本上,我希望保护给定 OU 中的每个“事物”和每个“事物容器”,以免被意外删除(以及所有由此产生的结果),但我一直在开发的脚本仍然要求我为每个 OU、每个子 OU、每个 OU 的对象等编写单独的一行。脚本现在有几十行长,我觉得编写脚本完全违背了节省时间的目的。
我一直对 OU 使用以下模式:
Get-ADOrganizationalUnit -Filter * -SearchBase “ou=OU,ou=rootOU,dc=domain,dc=com” | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true
这个是针对对象的:
Get-ADobject -Filter * -SearchBase “ou=OU,ou=rootOU,dc=aemea,dc=kao,dc=com” | Set-ADobject -ProtectedFromAccidentalDeletion $true
这些对于我所针对的特定 OU 或对象来说工作正常,但我想为目标 OU 下的每个对象和 OU 设置此值。
提前感谢大家的建议和帮助!
答案1
- 似乎有点过度了;可能已经花了太多时间了
- 我认为这是一个坏主意
- AD 回收站的存在是为了快速取消删除对象。
- 我认为可能有一些逻辑不是将其作为所有对象的默认设置 - 并且仅限于容器对象。
尝试 LDAP 过滤器;包括您需要的所有其他对象类。
Get-ADObject -LDAPFilter '(|(objectClass=organizationalUnit)(objectClass=User)(objectClass=Computer))'
或者你也可以疯狂一点:
Get-ADObject -LDAPFilter '(objectClass=*)'
我真的不会这么做——修改 AD 中每个对象的 ACL 的后果未知(这本质上就是“防止删除”)