Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1849724
  • 博文数量: 354
  • 博客积分: 11021
  • 博客等级: 上将
  • 技术积分: 4048
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-24 10:04
文章存档

2020年(1)

2018年(1)

2016年(1)

2015年(2)

2014年(4)

2013年(4)

2012年(12)

2011年(14)

2010年(37)

2009年(34)

2008年(22)

2007年(68)

2006年(102)

2005年(29)

2004年(21)

分类: WINDOWS

2006-07-18 10:13:21

这两天在公司搞域,查到一些相关的资料,收起来吧!

  1、bat可以作为登陆脚本执行,确切说一切可以在windows平台执行的东西都可以作为登陆脚本来用。
  2、应该指定以\\server\……这样格式开头的路径。因为client在登陆的时候执行脚本,其实是从服务器上下载到本地,然后执行。这样的话,如果指定c:\这样的路径,client只会在本地的c盘查找,而不是到server上的路径去查找。
  3、脚本可以放在一切client能够读取的位置。通常这个位置处于\\server\netlogon的share下(在服务器上的位置是% systemroot%\sysvol\sysvol\domainname\scripts),但是如果你制订了策略,那么脚本默认的存放路径应该在% systemroot%\sysvol\sysvol\domainname\policies\guid\user(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的设定,则需要重新启动机器来获得脚本的执行。

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

  上面只是就一些常见的问题做简要介绍,如果遇到更为复杂的问题,就需要查阅其他资料来

  FAQ:
  一般脚本的存放位置有两种观点:
  1、将登陆脚本放在\\server\netlogon下(在dc上的物理路径是 %systemroot%\SYSVOL\sysvol\domainname\SCRIPTS ,而不是 sysvol\sysvol\scripts)
在设置账户属性中登陆指令档的时候,此时是登陆域的时候默认寻找登陆脚本的位置
如果需要修改该脚本,需要手动定位到上面的路径,
优点是脚本集中放置
  2、将登陆脚本放在策略gpo所处的路径下(在dc上的物理路径类似于这样
\\domainname\SysVol\domainname\Policies\{142B4268-9574-471F-9F7F-9AA04836F57F} \User\Scripts\Logon,这里一长串的数字是gpo的guid,用来唯一的标识这个对象,可以通过查询该策略的属性,来察看该guid)
在设置策略中登入指令档的时候,此时是登陆域的时候默认寻找登陆脚本的位置
如果需要修改该脚本,可以点击下方的“显示档案”优点是和策略关联性强,编辑查找方便
无论用哪种方法,如果脚本放置在默认的查询路径,指定登陆档的时候就不用写路径
如果不是,就需要填写完整路径,当然这个路径需要对于client可用,也就是说
不能填写诸如 c:\winnt\sysvol\sysvol 这样的路径,否则client在登陆的时候,只会
在自己的机器上 c:\winnt\sysvol\sysvol 查找脚本,显然是找不到的,因为脚本
是下载到本地执行的。

  那么我们先看看脚本是否能够在client上正确执行,在client上 winkey+r,然后填入脚本的路径,比如 \\servername\netlogon\config.bat 执行一下,是否能够等到正确的结果?然后察看上面的位置中指定的路径是否正确。如果 是通过策略指定的登陆脚本,我们再用 gpresult /v ,察看一下client是否应用到了您制定的策略,如果没有就要考虑使用 dssite.msc 手动同步域中的所有dc,然后
secedit /refreshpolicy user_policy (machine_policy)/enforce 强制刷新策略,然后client重新登陆或者重新启动一下(这取决于您制订的是用户登陆脚本还是计算机登陆脚本)

  如果还是不行,那么在早先的那篇文章有提到,有可能是由于本地已经map 了同样盘符的盘,导致冲突有可能是由于map的共享路径权限设置错误,常见的是共享权限的设置问题,有可能是由于map的共享是跨平台的存储设备或者格 式,它们可能不能在登陆时在系统要求的时间内响应,这导致系统认为该资源超时连接,不可用。您可以尝试更换netbios名称或者ip看看是否有所改善。
阅读(5679) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~