如何提取 Active Directory 中存在的完整登录脚本(或脚本路径)列表?

如何提取 Active Directory 中存在的完整登录脚本(或脚本路径)列表?

作为项目的一部分,我正尝试提取 Active Directory 中可用的登录脚本(脚本路径)的完整列表。我能够通过使用 AD Manager Plus 提取带有名为“脚本路径”的附加属性的“所有 AD 用户”报告来提取当前正在使用的脚本路径列表。但是,我想要一个完整的登录脚本列表,以便我可以检查已使用和已过时的脚本。任何帮助都将不胜感激。

答案1

所有这些登录脚本路径很可能都指向 Netlogon 共享。因此,您可以前往那里搜索迄今为止尚未识别的其他脚本文件。

但是,请注意登录脚本仅GPO 中可能正在使用的脚本类型。如果您想要查看可能过时的脚本,则应该为所有 GPO 创建报告并查看每个 GPO 中链接的脚本。

对于未在任何 GPO 中使用但存在于 NETLOGON 中的脚本,您仍应非常删除它们时要谨慎。它们可能被组策略之外的某些进程或个人使用。许多环境使用 Netlogon 存储用于各种目的的随机脚本,因为它们被复制到所有 DC。

因此,为了确保没有使用任何非 GPO 脚本,您需要在域控制器上启用跟踪对象访问策略,并在每个脚本上创建文件系统审核策略,以跟踪每个人的“遍历文件夹/执行文件”。然后监控较长的时间间隔(几个月,而不是几天),并创建使用情况报告。

然后,如果您发现任何显然未被使用的,您应该经过适当的变更控制流程,以确保组织中可能受影响的各方收到即将删除的通知,并且您有适当的签字才能继续进行。

应首先将文件归档,以便能够在短时间内轻松恢复(将它们保留在原处,重命名为例如“script.vbs.bak”即可)。然后在合理的时间间隔内没有报告问题(对我来说,至少一个月)后,可以将它们备份(备份到单独的文件服务器、磁带等),然后删除。

对于任何未链接到 GPO 的脚本,但您发现在使用时,应该有一个合适的地方记录它们的用途。最好是在脚本本身的注释中。此外,在适用的情况下,在正式文档中,例如 Active Directory 设计/构建文档。至少,应该在脚本注释中标识脚本的“责任方”。

抱歉,我的回复太长了,但如果您不确定删除“未使用”的脚本是否会对任何系统或流程产生潜在影响,那么这些都是应该仔细考虑的事情。

答案2

您可以使用 Get-ADUser cmdletWindows PowerShell 的 Active Directory 模块列出域中的所有 ScriptPath 属性值。将其导入 Group-Object cmdlet,即可获得所有唯一脚本路径值的计数。

例子:

Get-ADUser -Filter * -Properties ScriptPath | Group-Object ScriptPath | Select-Object Count,Name

由于我们正在查看用户对象上的 scriptPath 属性,所以应该清楚这是指在登录域中任何计算机时在该用户上下文中运行的用户登录脚本。本文可能有点过时,但使用该属性的指导并没有改变。如果属性中未提供完整的共享路径,它将默认为您的域 NETLOGON 共享。

相关内容