在win2003域组策略中实现映射网络驱动器

在域组策略中实现映射网络驱动器一、把下面代码复制到记事本中,并保存文件名为“logon.vbs”Set WshNetwork = WScript.CreateObject("WScript.Netwo

在域组策略中实现映射网络驱动器

一、把下面代码复制到记事本中,并保存文件名为“logon.vbs”

Set WshNetwork = WScript.CreateObject("WScript.Network")

set wshshell=WScript.CreateObject("WScript.shell")

WScript.sleep 3000

WshNetwork.MapNetworkDrive "z:","X.X.X.XXXXX"

二、在AD 用户和计算机中的域名上右击,选择属性。

三、在弹出的窗口中选择组策略选项卡——点击编辑按钮——在跳出的默认域策略窗口中选择用户配置——Windows 设置——脚本(登陆/注销)——登陆属性——点击显示文件按钮,把logon.vbs 复制到弹出的文件夹中——点击添加按钮——点击浏览按钮把刚才复制的logon.vbs 脚本文件添加进去——点击确定按钮。

添加共享打印机

Set WshNetwork = WScript.CreateObject("WScript.Network")

Wshnetwork.addWindowsPrinterConnection "pc-hp1020"

Wshnetwork.SetDefaultpritner "pc-hp1020"

自动映射网络驱动器:

Set WshNetwork = WScript.CreateObject("WScript.Network")

WshNetwrok.RemoveNetworkDrive "z"

WshNetwork.MapNetworkDrive "z:","X.X.X.XXXXX"

@echo off

color f2

mode con cols=71 lines=10

echo **********************************************************************

echo ********将添加网络驱动器到本地倒数第一个可用盘符(一般为

Z :)***********

echo **********************************************************************

echo

@echo off

net use * Servershare P@ssw0rd /user:Domainsharer /PERSISTENT:no

net use x: servernamesharename /y

删除用:

net use x: /d

,

net usr z: 2.168.2.1mcse passwoed /user:username

可以通过下面的方法来实现:

1、首先在域中建立一个文件服务器,然后在该文件服务器上创建一个共享文件夹,然后为每个域账号设置不同的NTFS 权限和共享权限,比如账号A 只有查看的权限,账号B 拥有写的权限;

2、在客户端client1上使用域账号A 登录,右键点击我的电脑,选择映射网络驱动器,指定驱动器的名称,然后点击浏览,查找文件服务器和共享文件夹,请选中登录时重新连接。

3、点击完成。

4、在客户端client2上使用域账号B 登录,按照上述的方法建立到文件夹服务器的共享文件夹的映射驱动器;

5、这样就可以实现账号A 和账号B 登录后就可以看到网络驱动器,并且拥有不同的权限。

如何为一个域用户设置登陆脚本?

- BAT可否作为登陆脚本?

- 在域用户“属性”中,应如何指定登陆脚本名?"D:x.bat"还是"srvx.bat"?还是其它?

- 脚本应该放在何处?

1、bat 可以作为登陆脚本执行,确切说一切可以在windows 平台执行的东西都可以作为登陆脚本来用。

2、应该指定以server……这样格式开头的路径。因为client 在登陆的时候执行脚本,其实是从服务器上下载到本地,然后执行。这样的话,如果指定c:这样的路径,client 只会在本地的c 盘查找,而不是到server 上的路径去查找。

3、脚本可以放在一切client 能够读取的位置。通常这个位置处于servernetlogon的share 下(在服务器上的位置

是systemrootsysvolsysvoldomainnamescripts),但是如果你制订了策略,那么脚本默认的存放路径应该

在systemrootsysvolsysvoldomainnamepoliciesguiduser(machine)scripts 下,如果你放在别的位置,需要在脚本执行栏的位置输入绝对路径,格式同样需要以server……开头。

4、其他的问题也很多了,一般来说就是脚本适用于策略的时候,客户端可能会执行不到。

一般来说可能会有一下的几个原因:

a 、脚本从名称到内容都尽可能的不要用特殊字符、长文件名(超过8个字符)、空格,比如&等。这样的脚本在不同的os 上可能执行会有问题。

b 、脚本存放的位置和路径,请遵照上面的原则来做。

c 、脚本的编写方面。特别是适用net use 来map 一个fileserver 上的路径。有可能在登陆之前,client 上已经有网络盘的映射,如果恰好和你map 的盘符一样,将有可能导致脚本执行失败,你可以在脚本的最前面加一句net use * /d /y来解

,

决这个问题。

不过这个命令要慎用,在实际生产环境中,如果你的fileserver 是非wintel 平台的storage ,响应时间较长,那么可能导致用户重新登陆时,无法连接fileserver 上的sharefolder ,可以用一句if exist来判断网络盘是否存在。

另外一个方面,如果远程设备是一些跨平台的存储设备,比如一些nas 、san 等,map 到windows 平台的时候可能会提示“网络路径无法连接”等问题,可以相互更换map server_netbios_name或者map server_ipaddress两种方式来尝试连接。

如果遇到权限问题,那么按照共享权限和安全权限冲突时取最小值的原则,一般来讲可以将共享权限设置为full control,然后安全权限做严格设定的办法来解决。

d 、关于策略的执行顺序是本机、站点、域、ou 、子ou 。如果有设置上的重复,按照执行的顺序,后面的设置将会覆盖前面的设置。

如果在ou 上设置“block policy inheritance”,那么上层的策略将不会在这一层获得执行。

如果在ou 上设置“No override”,那么这一层将不会被后面的策略设置覆盖,也就是说即使后面有相同的设置,仍然以这一层的设置为准。

如果在ou 上设置“disabled”,那么这个策略将会被禁止执行。

如果在策略的properties security上取消了对应的组的read 和apply group policy ,那么对应的组将会无法应用到策略。通常默认被应用的组有

authenticated user。

如果你取消了该组的两个权限,然后add 其他组,同样赋予read 和apply group policy 的话,此策略将只会被该组执行到,这也就是所谓的filter 。

如果你的域中有多台dc ,可能需要在dssite.msc 中手动同步它们。

你也可以在服务器上使用secedit /refreshpolicy user_policy(machine_policy) /enforce 来强制刷新策略

这样的办法同样适用于client 。

e 、执行的脚本,可以放在computer configuration和user configuration中执行。 对于user ,通常可以放置更改用户属性的东西。

对于computer ,通常可以放置更改计算机属性的东西。

这两个没有绝对界限,但通常登陆的时候,都属于domain users成员,这样如果需要更改注册表或系统文件之类的,可能会遇到权限问题,那么我们也可以把这样的脚本放在computer 中,这样可以在user 登陆之前获得执行。

(这里顺带说一句:大家很少用到计算机账户吧,那么计算机账户的作用在这里可以得到体现,由于此时还没有用户账户验证,计算机账户和dc 的验证有一方面来源于本地计算机账户和dc 之间保持一个密码同步,以便于在这种特殊的情况下获得验证,该密码默认30天变更一次。

你甚至可以在sharefolder 上添加计算机账户的权限:)如果由于dns 对应或者其他的一些原因,导致这个密码无法同步,dc 将会无法验证该计算机账户,这可能会导致计算机登陆脚本无法执行。在dc 的日志上一般都会给出一个错误提示,ComputerNetbiosName$无法存取。解决的办法,可以通过在客户端上执行

,

netdom 重置该信任关系,这是另话了。)

对于user 的设定,只需要登出然后登入即可获得脚本的应用。

对于computer 的设定,则需要重新启动机器来获得脚本的执行。

d 、“配置文件路经”和“登陆脚本路径”、“主文件夹”

朋友们在初次设置域账户脚本的时候,可能对于这三个概念有些模糊,难以区分,这里说明一下:

①使用组策略,在用户登录脚本的的地方编辑一个cmd 等,使用诸如net use的方式就可以map 一个网络盘符了。

②“配置文件路径”是指用户profile 所处的位置,通常在userprofile

“登录脚本路径”是指用户登录到服务器时,执行的脚本所处的位置,通常默认路径位于服务器上的netlogon 下,如果制定策略中使用脚本,默认的路径应该在gpo 的guid 下的user 或者computer 下的scripts ,如果置于其他位置,需要手动指定完全路径。

③“主文件夹”是指用户在fileserver 上的个人主目录,这个概念没有绝对的位置。需要你手动指定路径,不过在这里写入和在脚本中写入的不同,在于系统会根据你写入的路径,自动创建文件夹,并为该用户分配权限,该文件夹的owner 属于该用户。这里可以使用username的变量,让系统自行完成。当然在指定了主目录后,你仍然可以访问其他有权限使用的资源。

e 、关于策略的执行顺序是本机、站点、域、ou 、子ou 。如果有设置上的重复,按照执行的顺序,后面的设置将会覆盖前面的设置。

如果在ou 上设置“block policy inheritance”,那么上层的策略将不会在这一层获得执行。

如果在ou 上设置“No override”,那么这一层将不会被后面的策略设置覆盖,也就是说即使后面有相同的设置,仍然以这一层的设置为准。

如果在ou 上设置“disabled”,那么这个策略将会被禁止执行。

如果在策略的properties security上取消了对应的组的read 和apply group policy ,那么对应的组将会无法应用到策略。通常默认被应用的组有

authenticated user。

如果你取消了该组的两个权限,然后add 其他组,同样赋予read 和apply group policy 的话,此策略将只会被该组执行到,这也就是所谓的filter 。

如果你的域中有多台dc ,可能需要在dssite.msc 中手动同步它们。

你也可以在服务器上使用secedit /refreshpolicy user_policy(machine_policy) /enforce 来强制刷新策略

这样的办法同样适用于client 。

f 、执行的脚本,可以放在computer configuration和user configuration中执行。 对于user ,通常可以放置更改用户属性的东西。

对于computer ,通常可以放置更改计算机属性的东西。

这两个没有绝对界限,但通常登陆的时候,都属于domain users成员,这样如

,

果需要更改注册表或系统文件之类的,可能会遇到权限问题,那么我们也可以把这样的脚本放在computer 中,这样可以在user 登陆之前获得执行。

计算机账户:大家很少用到计算机账户吧,那么计算机账户的作用在这里可以得到体现,由于此时还没有用户账户验证,计算机账户和dc 的验证有一方面来源于本地计算机账户和dc 之间保持一个密码同步,以便于在这种特殊的情况下获得验证,该密码默认30天变更一次。你甚至可以在sharefolder 上添加计算机账户的权限。

如果由于dns 对应或者其他的一些原因,导致这个密码无法同步,dc 将会无法验证该计算机账户,这可能会导致计算机登陆脚本无法执行。在dc 的日志上一般都会给出一个错误提示,ComputerNetbiosName$无法存取。解决的办法,可以通过在客户端上执行netdom 重置该信任关系,这是另话了。

对于user 的设定,只需要登出然后登入即可获得脚本的应用。

对于computer 的设定,则需要重新启动机器来获得脚本的执行。

注:从上面的几点中,大家可以看到计算机在登陆的时候需要通过dns 来定位dc ,从而定位定位gpo ,sysvol (策略、脚本、管理模板都存放在这里),dns 对于ad 的设置是至关重要的,一般来说可以这样设置,将客户端的dns 指向dc (如果dc 上是双网卡的话,那么指向内部网卡dns ),然后在dc 上设置转发,forward 到外部(isp )dns 。

FAQ :

配置过程如下:

1、制作脚本文件config.bat 并拷贝至域控制器服务器下的sysvolsysvolscripts 目录下

该脚本文件用 net use z: linux_fileshare 命令

2、配置“配制文件路径”:路径指向: wf_sav(域控制服务器名) etlogon 配置“登录脚本路径”: config.bat

3、在客户机注销重新登陆时出现以下窗口:但未能将共享文件夹映射为Z 盘。 回答:一般脚本的存放位置有两种观点:

1、将登陆脚本放在server etlogon下(在dc 上的物理路径

是 systemrootSYSVOLsysvoldomainnameSCRIPTS ,而不是 sysvolsysvolscripts )

在设置账户属性中登陆指令档的时候,此时是登陆域的时候默认寻找登陆脚本的位置。如果需要修改该脚本,需要手动定位到上面的路径,优点是脚本集中放置

2、将登陆脚本放在策略gpo 所处的路径下(在dc 上的物理路径类似于这样 domainnameSysVoldomainnamePolicies{142B4268-9574-471F-9F7F-9AA04836F57F}UserScriptsLogon,这里一长串的数字是gpo 的guid ,用来唯一的标识这个对象,可以通过查询该策略的属性,来察看该guid )

,

在设置策略中登入指令档的时候,此时是登陆域的时候默认寻找登陆脚本的位置 如果需要修改该脚本,可以点击下方的“显示档案”

优点是和策略关联性强,编辑查找方便

无论用哪种方法,如果脚本放置在默认的查询路径,指定登陆档的时候就不用写路径。

如果不是,就需要填写完整路径,当然这个路径需要对于client 可用,也就是说不能填写诸如 c:winntsysvolsysvol 这样的路径,否则client 在登陆的时候,只会在自己的机器上 c:winntsysvolsysvol 查找脚本,显然是找不到的,因为脚本是下载到本地执行的。

那么我们先看看脚本是否能够在client 上正确执行,在client 上 winkey r,然后填入脚本的路径,比如 servername etlogonconfig.bat

执行一下,是否能够等到正确的结果?

然后察看上面的位置中指定的路径是否正确

如果是通过策略指定的登陆脚本,我们再用 gpresult /v ,察看一下client 是否应用到了您制定的策略,如果没有就要考虑使用 dssite.msc 手动同步域中的所有dc ,然后secedit /refreshpolicy user_policy (machine_policy)/enforce 强制刷新策略,然后client 重新登陆或者重新启动一下(这取决于您制订的是用户登陆脚本还是计算机登陆脚本)

如果还是不行,有可能是由于本地已经map 了同样盘符的盘,导致冲突 有可能是由于map 的共享路径权限设置错误,常见的是共享权限的设置问题 有可能是由于map 的共享是跨平台的存储设备或者格式,它们可能不能在登陆时在系统要求的时间内响应,这导致系统认为该资源超时连接,不可用。您可以尝试更换netbios 名称或者ip 看看是否有所改善。

将用户添加到组的脚本:

引用:

dim MyUserContainer as IADsContainer

dim MyUser as IADsUser

dim MyGroup as IADsGroup

dim Filter as Variant

Filter = Array( user );

set MyUserContainer = GetOBject( WinNT://ABX )

MyContainer.Filter = Filter filter out all objects except users

set MyGroup = GetObject( WinNT://ABX/Manufacturing_Users )

for each MyUser in MyUserContainer

if not MyGroup.IsMember(MyUser) then

,

MyGroup.Add(MyUser) end if

标签: