递归 PowerShell 脚本可保护所有 OU 和对象免遭意外删除

递归 PowerShell 脚本可保护所有 OU 和对象免遭意外删除

我确信一定有比我手动操作更简单的方法……

我正在尝试编写并运行一个 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

  1. 似乎有点过度了;可能已经花了太多时间了
  2. 我认为这是一个坏主意
  3. AD 回收站的存在是为了快速取消删除对象。
  4. 我认为可能有一些逻辑不是将其作为所有对象的默认设置 - 并且仅限于容器对象。

尝试 LDAP 过滤器;包括您需要的所有其他对象类。

Get-ADObject -LDAPFilter '(|(objectClass=organizationalUnit)(objectClass=User)(objectClass=Computer))'

或者你也可以疯狂一点:

Get-ADObject -LDAPFilter '(objectClass=*)'

我真的不会这么做——修改 AD 中每个对象的 ACL 的后果未知(这本质上就是“防止删除”)

相关内容