Vbscript 用于修改多值Active Directory显示说明符的VBS脚本
按照howto,我可以设置一个单值模式属性,该属性可以通过ADUC中的上下文菜单轻松更改。多值模式属性变得相当复杂。假设(为了论证起见)我的值是“Projects”,每个用户可以根据需要列出任意多个项目 下面是一个将项目设置为单个值的小脚本:Vbscript 用于修改多值Active Directory显示说明符的VBS脚本,vbscript,active-directory,Vbscript,Active Directory,按照howto,我可以设置一个单值模式属性,该属性可以通过ADUC中的上下文菜单轻松更改。多值模式属性变得相当复杂。假设(为了论证起见)我的值是“Projects”,每个用户可以根据需要列出任意多个项目 下面是一个将项目设置为单个值的小脚本: Dim oproject Dim oUser1 Dim temp1 Set oproject = Wscript.Arguments Set oUser1 = GetObject(oproject(0)) temp1 = InputBox("Project
Dim oproject
Dim oUser1
Dim temp1
Set oproject = Wscript.Arguments
Set oUser1 = GetObject(oproject(0))
temp1 = InputBox("Project: " & oUser1.project & vbCRLF & vbCRLF & "Project")
if temp1 <> "" then oUser1.Put "project",temp1
oUser1.SetInfo
Set oUser1 = Nothing
Set oproject = Nothing
Set temp1 = Nothing
WScript.Quit
Dim-oproject
暗室1
暗节拍1
Set-oproject=Wscript.Arguments
设置USER1=GetObject(oproject(0))
temp1=输入框(“项目:&user1.Project&vbCRLF&vbCRLF&“项目”)
如果temp1为“”,则USER1.Put为“项目”,temp1为“”
user1.SetInfo
设置为1=无
Set-oproject=Nothing
设置temp1=无
WScript.Quit
如何修改它以允许、分配和修改多个值?我放弃了一个优雅的UI,只使用分号分隔的列表。如果有人在乎,下面是代码:
Dim objProject
Dim objUser
Dim temp1, title, message, default
Dim projects
title = "Projects"
Set objProject = Wscript.Arguments
Set objUser = GetObject(objProject(0))
'Find our current projects
projects = objUser.projects
If Not isArray(projects) Then
projects = Array(projects)
End If
'Setup our message box
message = "Semicolon-delimited list of Projects"
default = arrayToStr(projects)
temp1 = InputBox(message, title, default)
'catch cancels
if IsEmpty(temp1) Then
WScript.Quit
End If
' update our data
projects = strToArray(temp1)
objUser.Put "projects",projects
objUser.SetInfo
'Clean up and quit
Set projects = Nothing
Set objUser = Nothing
Set objProject = Nothing
Set temp1 = Nothing
Set title = Nothing
Set message = Nothing
Set default = Nothing
WScript.Quit
'Functions
Function strToArray(s)
Dim a
Dim token
' discard blank entries
For Each token in split(s, ";")
token = trim(token)
If token <> "" Then
If isEmpty(a) Then
a = token
Else
a = a & ";" & token
End If
End If
Next
' return array
strToArray = split(a, ";")
End Function
Function arrayToStr(a)
Dim s
Dim token
For Each token in a
If isEmpty(s) Then
s = token
Else
s = s & ";" & token
End If
Next
' return string
arrayToStr = s
End Function
Dim对象项目
暗色objUser
Dim temp1、标题、消息、默认值
Dim项目
title=“项目”
Set objProject=Wscript.Arguments
Set objUser=GetObject(objProject(0))
“找到我们当前的项目
projects=objUser.projects
如果不是isArray(项目),那么
项目=数组(项目)
如果结束
'设置我们的消息框
message=“以分号分隔的项目列表”
默认值=arrayToStr(项目)
temp1=输入框(消息、标题、默认值)
“渔获量取消
如果我是空的(temp1),那么
WScript.Quit
如果结束
更新我们的数据
projects=strotarray(temp1)
把“项目”放进去,项目
objUser.SetInfo
"清理干净,退出"
设置项目=无
Set objUser=Nothing
Set objProject=Nothing
设置temp1=无
设置标题=无
设置消息=无
设置默认值=无
WScript.Quit
"功能",
函数strotarray(个)
暗淡的
暗号
'放弃空白条目
对于拆分中的每个标记,“;”)
令牌=修剪(令牌)
如果标记为“”,则
如果我是空的,那么
a=代币
其他的
a=a&“;”标记(&T)
如果结束
如果结束
下一个
'返回数组
strotarray=split(a,“;”)
端函数
函数arrayToStr(a)
暗淡的
暗号
对于
如果我是空的,那么
s=令牌
其他的
s=s&“;”标记(&T)
如果结束
下一个
'返回字符串
arrayToStr=s
端函数