我正在编写一个VBScript,它将运行在一个尚未成为域成员的计算机上,但需要对Active Directory进行查询以检查组的成员身份(作为构建过程中的一个步骤,同时重新映像一个计算机)。
脚本在运行时可以访问域用户帐户的凭据(即用户名和密码)。
在针对Active Directory进行此查询的脚本中,如何使用域凭据进行身份验证并使查询成功?
请注意:该域名不支持匿名查询。
在How Can I Run a Script Under Alternate Credentials?(嘿,脚本专家!博客)中,我找到了示例代码,如果我已经知道计算机的专有名称,它将会起作用:
Const ADS_SECURE_AUTHENTICATION = 1
Const ADS_USE_ENCRYPTION = 2
strAdsiPath = "LDAP://" & strDistinguishedName ' But I don't know the DN yet
strUser = "domain\user"
strPassword = "password"
Set objDso = GetObject("LDAP:")
Set objComputer = objDso.OpenDSObject(strAdsiPath, _
strUser, _
strPassword, _
ADS_USE_ENCRYPTION OR ADS_SECURE_AUTHENTICATION)
从那里,我可以检查objComputer
变量以找到组成员资格。
在对Secure LDAP object manipulation with VBscript using alternate credentials的回答中,只要知道对象的LDAP路径,就会有示例代码。
由于在成功通过身份验证之前我不知道如何获取计算机的可分辨名称,因此我无法看到如何使用上述示例中的代码。
除了OpenDSObject()之外还有其他方法可以让我传递凭据,还是以其他方式获取专有名称?