Hardie 在线博客

  • 实用技巧
  • 未来科技
  • 企业级应用
  • 漫谈安全
  • 生活日志
  • 关于我
Hardie 在线博客
这是一个有节操的网站,用知识捍卫自己的节操
  1. 首页
  2. 开发架构
  3. 正文

批量添加vpn

2015年10月10日 0人点赞 0条评论

也是一个自用的脚本,用了好多年了

On Error Resume Next
Dim OUPath,vpnGroup,i,isFound
Dim Uns 
'把要添加VPN的用户都放这里执行脚本就可以了,多个用户最好命令行执行避免弹出提示。


Uns = "username1 username2" '多个用户直接在引号里面用空格分开就可以了


'这个是搜索路径
Uns = Split(Uns)
OUPath="OU=xxx,OU=xxxx,DC=domain,DC=com"
isFound = False
Dim ADuser,CName,LoginName
'=========================================
'Call CheckVpn(OUPath,LCase(Uns(0)))
For i = LBound(Uns) To UBound(Uns)
Call CheckVpn(OUPath,LCase(Uns(i)))
Next
'=========================================

'--------------遍历用户-------------------
Sub CheckVpn(OUdName,UsrName)

	Const ADS_SCOPE_SUBTREE = 2
	Const ADS_PROPERTY_APPEND = 3
	Set objConnection = CreateObject("ADODB.Connection")
	Set objCommand = CreateObject("ADODB.Command")
	objConnection.Provider = "ADsDSOObject"
	objConnection.Open "Active Directory Provider"
	Set objCommand.ActiveConnection = objConnection
		objCommand.Properties("Page Size") = 1000
		objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
		objCommand.CommandText = "SELECT distinguishedName,displayName,sAMAccountName FROM 'LDAP://"& OUdName & "' WHERE objectCategory='user' AND msNPAllowDialin <> '*'"
	Set objRecordSet = objCommand.Execute
	objRecordSet.MoveFirst
	Do Until objRecordSet.EOF Or objRecordset.BOF
		CName = objRecordSet.Fields("DisplayName").Value
		LoginName = objRecordSet.Fields("sAMAccountName").Value
		If LCase(LoginName) = UsrName Or LCase(CName) = UsrName Then
		Set ADuser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)
			ADuser.Put "msNPAllowDialin", True
	    	ADuser.SetInfo
	    	Set objGroup = GetObject("LDAP://CN=vpnUser,OU=xxxx,DC=domain,DC=com")
			objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array(objRecordSet.Fields("distinguishedName").Value)
	    	objGroup.SetInfo
	    	isFound = True
	    	showResult UsrName
	    	Exit Sub
	    End If
		objRecordSet.MoveNext
	Loop
	
	showResult UsrName
End Sub

'------------------遍历OU----------------
Sub ListSubOUs(strOUDN,UsrName)
		If isFound Then Exit Sub
        Set objRootOU = GetObject("LDAP://" & strOUDN)
        objRootOU.GetInfoEx Array("canonicalName"),0
        strcanonicalName = objRootOU.Get("canonicalName")
'根据OU检查用户
		CheckVpn strOUDN,UsrName
        objRootOU.Filter = Array("organizationalUnit")
        For Each objOU In objRootOU
                Call ListSubOUs(objOU.distinguishedName)
        Next
End Sub

Sub showResult(tarName)
If isFound Then
	WScript.Echo "已经将" & CName&"("& LoginName &")的VPN开通成功"
Else
	WScript.Echo "该用户(" & tarName & ")不存在或者已经开通了VPN"
End If
End Sub
标签: 暂无
最后更新:2015年10月10日

Hardie

打赏 点赞
下一篇:转一片关于游戏架构的文章

相关文章

  • 网页编码碎碎念
  • 解浏览器-Edge使用技巧
  • 十大经典排序算法(附动画演示)

文章评论

取消回复

最新 热点 随机
最新 热点 随机
关于学习的方法论 实用技巧-文件管理之道 快速搭建WSL开发环境 升级到Windows11后聊天软件崩溃的问题 通勤的改变会给我们的生活带来什么 解浏览器-Edge使用技巧
创建了新的博客回忆Bar 关于学习的方法论 解浏览器-Edge使用技巧 【专题】一步一步实施itop项目之用户手册(4.配置管理) 面试中的65个经典问题--技巧性回答 【专题】一步一步实施itop项目之安装itop过程(1.2)
最近评论
yongyu 发布于 4 年前(01月02日) 请问一下怎更改登录机制,让用户登录的时候默认登录到前台而非后台。
yzzz 发布于 4 年前(11月26日) 为啥我是管理员用户,登录直接就进后台了,如何切换前台查看工单呀
lois 发布于 4 年前(11月26日) 请问工单可以自动分配么
Mirror 发布于 4 年前(10月25日) 请问我使用的是Itop 2.7版本登录门户用户就报错Nowhere to go?麻烦帮忙看下啥问题可...
liu 发布于 4 年前(09月26日) service desk agent 和support agent角色区别是什么啊
           

  • Hardie在线 All rights reserved
  • 首页
  • ITOP专题
  • 更新日志
  • 留言板
  • 关于我
  • 本站由[阿里云]提供ECS
粤ICP备16042250号-1