AD域登录脚本:按用户身份映射部门共享盘

本文探讨了在组策略之外,如何使用VBScript登录脚本来自动映射AD域用户的身份到相应的部门共享盘。当用户属于本地管理员组时,由于UAC影响,脚本可能无法正常工作,因此建议使用前导脚本来解决这个问题。提供了一个简单的脚本示例,方便根据用户身份定制共享盘映射。
摘要由CSDN通过智能技术生成

还需要登录脚本吗?

虽然现在可以很方便地用组策略来实现网络共享映射,但有些时候VBS脚本仍然有它的用武之地,例如:

  • 映射用户主目录(可以通过用户属性设置用户主目录,但个人感觉通过脚本更加方便);
  • 个性化的映射如将扫描仪的目标目录映射为“我的扫描仪”以方便网络扫描仪的使用;
  • 记录用户登录及注销日志;
  • 收集客户端软、硬件信息;
  • 服务器或客户端异常导致组策略未能正确应用;
  • 客户端异常导致应用组策略后登录等待时间过长;
  • 没有原因,就是喜欢使用脚本

组策略与UAC

简单来说,如果用户属于客户端电脑的管理员组(一般手提电脑用户会加入本地管理员组以方便用户日常使用;台式电脑如果有程序需要在管理员模式下才能正常运行的也需加入本地管理员组,当然,此种情况亦可以通过AutoIT来解决),此时直接运行登录脚本将达不到预期效果,因为此种情况下脚本将会运行在elevated privilege user context下,而不是运行在当前登录的interactive user context下。
所以,一般情况(因为现在基本都是Windows 7 和Windows 10的客户端了吧),如使用登录脚本,最好不要直接引用登录脚本, 而是引用一个前导脚本,解决域用户是本地管理员时的运行问题。

注:此脚本为国外同行根据微软官方的launchapp.wsf所写,出处找到后再补上

'launchapp.vbs, modified from Microsoft's launchapp.wsf
'launches a process as interactive user, NOT as the elevated privilege user context
Option Explicit

Set objNetwork = CreateObject("Wscript.Network")

Const TriggerTypeRegistration = 7
Const ActionTypeExecutable = 0
Const FlagTaskCreate = 2
Const LogonTypeInteractive = 3

Dim strWorkingDirectory, strHostname, strOSVer, colProcessList, strUser, strDomain
Dim objNetwork, objComputer, objShell, objExec, objWMI, objItem, strScriptName, strStdOut
Dim strLogonScriptName, strUserProfile, strTargetScript

'定义登录脚本目录,通常和launchapp.vbs在同一目录
strWorkingDirectory = "\\mycorp.com\SYSVOL\mycorp.com\Policies\{
  9D8F5AF1-E6DF-491D-B980-DCF66DBDACE0}\User\Scripts\Logon"

'定义登录脚本名称logon.vbs
'launch this login script
strScriptName = "logon.vbs"
strLogonScriptName = strWorkingDirectory & "\" & strScriptName

Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("WScript.Shell")
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
strHostname = objNetwork.ComputerName
Set objComputer = GetObject("WinNT://" & strHostname & ",computer")
strOSVer = objComputer.OperatingSystemVersion

strUserProfile=objShell.ExpandEnvironmentStrings("%USERPROFILE%")
strTargetScript = strUserProfile & "\logon.exe"

If strOSVer >= 6 Then
  If IsElevated() Then
    'Machine has UAC and user is elevated so use LAUNCHAPP.WSF Task Scheduler method based
    'on appendix from http://technet.microsoft.com/en-us/library/cc766208(WS.10).aspx
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值