当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > windows.关于设置脚本的一些基本方法原则

VBScript
一个实现VBS倒计时的代码
用vbs实现将剪切板的unix格式的内容处理成pc格式的代码
用vb和vbs 破解flashxp的密码的代码
用VBS实现的批量gb2312转utf-8,支持拖动
用vbs实现的XP序列号替换器
VBS可以做什么的简单说明
用vbs实现cmd功能的代码
VBS基础编程教程 (第1篇)
VBS基础编程教程 (第3篇)
VBS基础编程教程 (第4篇)
VBS基础编程教程 (第5篇)
VBS基础编程教程 (第6篇)
利用vbscript的for命令实现定时关机
在桌面右下角出现温馨提示的vbs冒泡程序
利用VBS发送邮件 挑选速度快的肉鸡做VPN 的vbs代码
vbs教程 chm下载
用vbs实现的简单的服务器文件备份办法压缩文件名自动按日期命名
输入mdb数据库即可将打包的mdb文件解包
VBS编程教程第一部
vbs脚本 加密 几个小细节小结下

VBScript 中的 windows.关于设置脚本的一些基本方法原则


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 127 ::
收藏到网摘: n/a

提问:“看了这么多高手的帖子,却没有找到一个非常简单的问题的答案:
即如何为一个域用户设置登陆脚本?
- BAT可否作为登陆脚本?
- 在域用户“属性”中,应如何指定登陆脚本名?"D:\x.bat"还是"\\srv\x.bat"?还是其它?
- 脚本应该放在何处?
- 还有没有其它要注意的问题?”
(参加原帖热烈的讨论 http://www.winmag.com.cn/forum/itemdisplay.asp?boardid=24&id=393362
回答:
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、“配置文件路经”和“登陆脚本路径”、“主文件夹”
朋友们在初次设置域账户脚本的时候,可能对于这三个概念有些模糊,难以区分,这里说明一下:
①使用组策略,在用户登录脚本的的地方编辑一个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放在下面
FAQ:
★看了你给的配置过程链接:http://www.winmag.com.cn/forum/itemdisplay.asp?boardid=24&id=393362但运行还是出错?
我的配置过程如下:
1、制作脚本文件config.bat并拷贝至域控制器服务器下的sysvol\sysvol\scripts目录下
该脚本文件用 net use z: \\linux_file\share 命令
2、配置“配制文件路径”:路径指向:\\nwf_sav(域控制服务器名)\netlogon
配置“登录脚本路径”: config.bat
3、在客户机注销重新登陆时出现以下窗口:但未能将共享文件夹映射为Z盘。
(参与原帖热烈的讨论 http://www.winmag.com.cn/forum/itemdisplay.asp?boardid=24&id=509835
回答:一般脚本的存放位置有两种观点:
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
看看是否有所改善。
如果您还有问题,欢迎您继续讨论!
这个faq,我将同步更新在
http://www.winmag.com.cn/forum/itemdisplay.asp?boardid=24&id=393362
同时,您也可以参考 《HOW TO:在 Windows 2000 中分配脚本》http://support.microsoft.com/kb/322241/zh-cn