VBS 脚本未对特定用户执行

VBS 脚本未对特定用户执行

我有一个 GPO,可以成功运行登录/注销脚本,以便大多数用户将用户描述更新为他们的计算机名称。这适用于所有用户,但有一个用户除外,该用户收到的错误是

Line:14

Char:1

Error: Access is denied

Code: 80070005

Source: Active directory.

脚本的第 14 行包含:objUser.SetInfo

GPO 权限允许经过身份验证的用户进行“读取”。

错误本身似乎是一个通用权限问题,但收到错误的用户仍然应该是“经过身份验证的用户”,因为他能够登录 Active Directory(如果我错了,请纠正我)。该用户唯一不寻常的地方是,他是最多 6 个组的成员,其中域用户是主要组。寻求解决此问题的指导。

有问题的剧本

Option Explicit
Const ADS_PROPERTY_UPDATE = 2 
Dim objSysInfo, objUser, objNetwork, strComputer, strDescription

Set objSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)

Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName

strDescription = "Logged on " & strComputer & " on " & Date

objUser.Put "description", strDescription
objUser.SetInfo

答案1

除非我目前正在做的事情$日常工作完全模糊了我的视野或判断力,您的脚本尝试将 Active Directory 用户对象的描述设置为用户登录的计算机(以及登录的日期)。

默认情况下,普通用户无权编辑或设置其 AD 用户对象上的描述字段。因此,请仔细检查此 AD 用户对象的权限,并检查用户是否具有修改描述属性的权限。我敢打赌,即使您的所有其他用户都具有在其 AD 用户对象上执行此操作的权限,此用户也没有权限。

以我的一个用户和 ADSIedit 为例,我必须进入Properties,然后进入Advanced Security相关用户对象的设置,并检查是否Write Description允许SELF该用户所属的组或其中一个组具有该权限。

在此处输入图片描述

(我使用 ADSIedit 是为了获得有意义的屏幕截图,但老实说,对于大多数 AD 用户对象上的权限条目数量,如果要真正进行此检查,我肯定会将对象上的 ACL 转储到文本文件或命令行并通过它进行检查。这样更快,而且腕管综合症更少。)

相关内容