`
dwtf55dwtf
  • 浏览: 12851 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用脚本程序管理Windows网络(9)

阅读更多

使用脚本程序管理Windows网络(9)
2010年11月19日
  使用脚本程序管理Windows网络 第九部分:理解远程脚本
  在这一系列中将学习如何使用远程脚本来管理Windows网络的脚本编写基本知识,原文发表于WindowsNetworking.com。
  让我们回顾一下目前我们所了解到的关于使用WMI的远程脚本:
  在这个系列文章的第六部分“远程脚本初探”一文中,我们尝试修改我们的ChangeIPAddress.vbs脚本,以便我们可以通过它来远程修改计算机的IP地址。通过这个方法我们了解到,我们需要使用“分组策略(Group Policy)”来激活目标计算机上的Windows防火墙的“远程管理例外”,否则脚本将无法工作。虽然最终我们让脚本工作了,但它超时了并且还返回了一个错误。
  然后,在第七部分“修复神秘的错误”,我们发现可以在脚本中添加“On Error Resume Next”语句来绕过错误。但是,脚本仍然超时或者是用了很长的时间来完成运行。我向某个脚本高手请教了这个问题,我们对这个错误得到一个初步的解释,但是为了看看问题是否是普遍性的,我们创建了一个新的脚本ChangeGateway.vbs ,并且当我们远程运行此脚本时,它正常工作了。
  最后,在第八部分“使用Network Monitor 3.0脚本修复远程脚本故障”,我们的一个读者提出一个简单的可能导致错误的原因:更改远程计算机的IP地址中断了计算机连接,从而导致脚本运行出错并最终超时退出。这听起来很合理,所以,当我们运行脚本时,我们尝试使用Network Monitor 3.0来监测当我们运行脚本会发生什么情况,同时我们确信我们的网络跟踪分析证实这位读者的观点是正确的。
  然而,是时候是该回顾一下了。在我们继续更深入地之前,我们应该先学习的一些远程脚本的技术细节。不断地尝试是一件很好的事,但是有时候缺乏足够的知识积累我们就会很容易碰壁了。而学习这些基本知识往往可以帮助我们避免(或绕过去或者跳过去)碰壁。现在就让我们开始吧。
  两种类型的远程脚本
  确实有两种远程脚本。第一种是当我们在计算机A运行脚本时,脚本以计算机B为目标并在B上执行一些操作。之前我们使用了脚本ChangeIPAddress.vbs来尝试远程脚本,我们是将脚本中的这一行:
  strComputer = "."
  修改成:
  strComputer = "xp2"
  如果我们使用上面的第一行,并在计算机A上运行脚本 ,脚本以计算机A为目标(本地计算机或“.”)并修改了计算机A的IP地址。然而,如果我们使用上面的第二行,并在计算机A上运行脚本,脚本将以计算机B为目标(NetBIOS名为“xp2”的计算机)并修改了计算机B的IP地址。
  但是,这里还有第二种远程脚本,它是这样运行的:我是登录到计算机A上的管理员,同时,我想使用一个脚本对计算机B上进行一些操作。但是,我想直接在计算机B上运行脚本,而不是在计算机A上运行脚本并计算机B作为脚本的操作目标。因此,我必须将我计算机A上的脚本转移到计算机B上并且在计算机B上运行脚本。如何才能做到这一点?如果我有一个Active Directory环境,那么我可以在远程计算机上尝试将脚本作为一个登录脚本运行。在接下来的文章中我们会研究如何做到这一点,但现在我们只要知道有这两种类型的远程脚本:
  ●在本地计算机上运行脚本,目标指向另一台远程计算机
  ●直接在远程计算机上运行脚本
  让我们总结一下这2种远程脚本方法之间的区别:
  ●第一种远程脚本需要连接到远程计算机,然后运行脚本。
  ●第二类远程脚本需要部署脚本到远程计算机,然后运行脚本。
  知道它们的区别了吗?
  理解远程脚本连接
  现在我们把重点放在第一类型的远程脚本(这在前面的几章中我们所尝试的做法)。一个脚本在本地计算机上运行的然后连接到远程计算机并对它运行操作,这意味着什么呢?这意味着三件事:
  ●网络连接
  ●用户身份
  ●适当的权限
  网络连接
  对于要在远程计算机上进行了一些操作的脚本,首先脚本需要与远程计算机建立网络连接。有哪些问题可能会阻止网络连接呢?
  首先,可能会有一个域名解析问题。如果我们的脚本不能将远程计算机的主机名或FQDN(Fully-Qualified Domain Name,完整域名)解析为有效的IP地址,那么远程脚本将会运行失败。
  第二,可能会有一个防火墙问题。我们在前一篇文章中看到,为了让我们的WMI脚本在远程计算机运行,我们必须打开远程计算机上的Windows防火墙的远程管理例外。如果你现在打开控制面板上的Windows防火墙,并选择“例外”选项卡,你将无法找到一个用来打开防火墙例外的“远程管理”的复选框。这其中的原因当然是,“控制面板”主要是提供给家庭用户来配置防火墙的。在一个Active Directory启用的业务环境下,首选的管理Windows防火墙的方式是使用“分组策略(Group Policy)”。我们在较早前的文章已经提到,我们需要配置的分组策略设置是这样的:
  Computer Configuration\Administrative 
  Templates\Network\NetworkConnections\Windows Firewall\Domain 
  Profile\Windows Firewall: Allow inbound remote administration exception
  ●当你将这个策略指向一台远程计算机时,它会打开计算机上的两个TCP端口: 445和135 :
  TCP端口445是Server Message Block (SMB)流量进入的端口,如果远程计算机上的防火墙关闭了这个端口,那么不仅你无法使用WMI连接它,而且你也无法使用标准的MMC控制台工具来连接它,如Computer Management。所以当端口关闭时,如果你尝试运行脚本操作远程的计算机,你可能会收到隐藏的错误,如“System error 53 has occurred. The network path was not found.”等等。
  ●TCP端口135是Distributed COM (DCOM)流量进入的端口。更具体地说,端口135是DCOM Service Control Manager (SCM )的一个监听端口,它提供了基于RPC的服务用于初始化COM对象等。
  概括而言,如果想要从本地计算机运行WMI查询可以成功地使用RCP封装连接到在远程计算机上的WMI服务,并且可以在远程计算机上成功实例化DCOM对象,TCP端口135和445都必须在远程计算机上的防火墙上打开。
  用户身份
  当你运行一个脚本操作远程计算机时,同时该脚本能够与远程计算机建立网络连接,那么该脚本就能够在远程计算机上执行相应的操作。但是,所执行的操作成功与否取决于在远程计算机上运行该脚本的用户身份。所以举例说,如果我使用普通域用户帐户登录到计算机A上。然后,我运行脚本ChangeIPAddress.vbs操作远程计算机B。脚本使用RPC连接到计算机B的WMI服务上 ,然后它尝试修改计算机B的IP地址。但是结果脚本失败了。这是为什么?那么,到底是谁在远程计算机上尝试执行这个行动呢?是你――而你是一个本地计算机的域用户,当你在默认情况下运行该脚本时,它借用了你的身份,即脚本试图使用你的身份(你的域用户帐户)来执行操作。所以,当脚本试图改变远程计算机的IP地址时,实际上是你,一个域用户,在试图这样执行这个操作。这样做当然会失败,因为修改一个IP地址要求有本地管理员权限。
  所以,如果你在计算机A上,以一个域用户登录,同时你还想要用你的脚本来改变计算机B的IP地址。你应该怎么做呢?
  其实,你可以硬编码地将远程计算机的本地管理员帐户的密码直接写到我们的脚本中去。换言之,在我们的ChangeIPAddress.vbs脚本上,我们可以这样将:
  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  替换成:
  strUser = "Administrator" strPassword = "Pa$$w0rd" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2", strUser, strPassword)
  问题是,这是不安全的――在你的脚本上,所有的人都可以从脚本中看到以文本方式记录的远程计算机的本地管理员帐户的密码!
  如何删掉上面两行代码,然后在脚本运行时,以命令参数传递的形式给变量strUser和strPassword赋值,是否可行呢?显然这是优于硬编码这些值到脚本上的方法,但是如果有任何人运行网络监测器(如Network Monitor 3.0 ),那么他们可以发现这些本应保密的认证信息,于是你可能又危害了你的远程计算机。
  那么如果我们使用runas /user:Administrator cmd.exe运行命令提示符,然后在没有指定其他任何验证的情况下,在命令提示符上运行该脚本,又是否可行呢?这可能是你在需要确保脚本有适当的运行身份(通常是本地管理员的目标计算机)时的远程脚本运行的最好解决方案,尽管这个是有一点麻烦的。当然,你也可以简单地作为一个域管理员帐户登录到工作站,并只需打开一个命令提示符运行该脚本。
  适当的权限
  现在情况是这样,你正在计算机A上运行你的脚本,而该脚本准备在远程计算机B上执行一些操作。脚本已经和计算机B上的WMI服务建立了网络连接,并且该脚本正以其适当的身份(通常是本地管理员)在计算机B上尝试执行它的操作。那么在这个时候,到底还有什么可能会导致脚本运行失败呢?权限不够!如果脚本正在执行一些由ACL(比如修改文件系统对象或者在Active Directory创建一个对象或者激活DCOM对象)控制的操作,而如果你(脚本所使用的你的身份)没有合适的权限来执行这一行动,该脚本将失败。不幸的是,对于远程脚本来说,这往往是最难的一部分,因为在Windows平台上有NTFS权限、DCOM权限,以及大量的其他类型的权限。另外,你可能有正确的权限组,但是没有特定的权限,如执行一些操作的权限。例如,假设你要使用脚本来清除远程计算机上事件日志,但你的身份缺乏关于该远程计算机的SeSecurityPrivilege。结果会怎么样?你的脚本将失败。
  对于远程脚本,还有很多需要学习的,不是吗?在我们的下一篇文章中,我们将继续对这个问题进行阐述。
分享到:
评论

相关推荐

    使用脚本程序管理Windows网络

    使用脚本程序管理Windows网络,使用脚本程序管理Windows网络

    Windows 脚本技术参考手册

    WSH Windows 脚本宿主的基本任务 <br> 访问网络 <br> 访问网络连接 控制网络打印机 <br> 创建自动登录脚本 驱动应用程序 执行文件管理操作 <br> 复制文件和文件夹 映射到特殊文件夹...

    Windows Script Host 2脚本开发人员指南PDF+源码

    首先,我使用了典型的“宏程序员”的做法,我试图结合简单的语句创建一个脚本程序。有时这种方法的工作,但我常常是语法和运行时的错误消息轰炸。我也错过了,我也可以用来复制文件,启动程序,获取用户输入,等强大...

    windowsnt 技术内幕

    向用户发送系统管理消息 远程关闭一台Windows NT计算机 使用Windows NT系统属性对话框 Windows NT诊断程序(Diagnostic)简介 使用Windows NT诊断程序打印一份报告 在Windows 95客户机上安装Windows NT系统管理工具 ...

    Windows 网络管理配置工具 NetSetMan 5.0.5.zip

    NetSetMan 使用配置好的网络信息自动对系统网络进行配置,用程序代替了繁琐的人工操作,简单方便;第一次使用NetSetMan时需要将使用的网络都配置一下,切换到不同网络时只需要打开NetSetMan选择设定好的配置选项点击...

    常用Windows管理命令

    progman 程序管理器 regedit 注册表 regedit.exe 注册表 regedt32 注册表编辑器 regsvr32 /u *.dll 停止dll文件运行 regsvr32 /u zipfldr.dll 取消ZIP支持 rononce p 15秒关机 rsop.msc 组策略结果...

    多功能脚本虚拟机

    2 VER 1.3.0.63 增强了同一脚本程序的多脚本语言功能,真正实现了同一脚本里使用多种语言 增加例程 javascript学习.sps 演示了VBS调用JS的函数并得到返回值 修正了多语言脚本的Code代码段读取分析...

    给WINDOWS7或Vista添加网络功能权限的脚本文件

    给WINDOWS7或Vista添加网络功能权限的脚本文件,使网络程序可以在非管理员用户下运行.

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    7.7 wevtutil——管理Windows事件 343 第8章 故障恢复 349 8.1 bcdedit——配置数据存储编辑器 349 8.1.1 bcdedit命令简介 349 8.1.2 应用于存储的bcdedit命令选项 349 8.1.3 应用于存储项的bcdedit命令选项 351 ...

    Windows脚本编程核心技术精解_源代码.rar

    主要内容有:脚本开发、对象调用、系统对话框调用、文件系统访问、其他程序的调用进程控制、注册表操作、系统信息处理、事件操作、网络通信、打印机等外设的使用、图标摘录、多媒体控制、数据库应用和服务器管理等。

    Windows脚本编程核心技术精解中文版.part3.rar

    主要内容有:脚本开发、对象调用、系统对话框调用、文件系统访问、其他程序的调用进程控制、注册表操作、系统信息处理、事件操作、网络通信、打印机等外设的使用、图标摘录、多媒体控制、数据库应用和服务器管理等。

    Windows脚本编程核心技术精解中文版.part1.rar

    主要内容有:脚本开发、对象调用、系统对话框调用、文件系统访问、其他程序的调用进程控制、注册表操作、系统信息处理、事件操作、网络通信、打印机等外设的使用、图标摘录、多媒体控制、数据库应用和服务器管理等。

    VBS脚本代码经典实例

    压缩文件中包含了近100个本人收集和实际应用的所有脚本,代码详细,涉及Windows账号,AD域管理,操作系统,注册表,文件读写,网络,端口扫描等等vbs代码,经典快下哦,vbs交流请加群70539804,本人是群主

    Windows Server 2008系统管理视频教程csdn.txt

    1-9使用虚拟机克系统09:55 1-10为克隆的系统产生新的SID13:35 1-11克隆系统和版权问题09:31 1-12挂在虚拟机硬盘文件到物理机05:35 1-13虚拟机的网络10:05 1-14将虚拟机网卡指定到特定网络10:04 1-15更改虚拟机网卡的...

    sharpoint,ISA等学习资料

    sharpoint,ISA,使用脚本程序管理Windows网络等学习资料

    WindowsServer2016系统管理视频教程csdn.txt

    第2章管理Windows用户和组1小时48分钟9节 2-1管理Windows用户04:50 2-2管理Windows组09:34 2-3用户和组的SID 用户登录令牌07:42 2-4使用命令管理用户和组06:10 2-5修改和重设用户密码 使用密码重设盘重设密码10:52 2...

    SAMBA工具使用指南:UNIX与WINDOWS NT网络互连

    第1章 UNIX和Windows网络互连 1 1.1 系统规划 4 1.1.1 桌面客户议题 5 1.1.2 企业计算问题 5 1.1.3 域和Realms 5 1.1.4 口令 6 1.2 使用Samba共享资源 6 第2章 UNIX概述 7 2.1 服务和守护进程 7 2.2 init进程 9 2.3 ...

    精通WindowsAPI 函数 接口 编程实例

    第1章 Windows应用程序开发入门 1 1.1 第一个实例程序 1 1.1.1 start.exe 1 1.1.2 Windows API 2 1.1.3 程序入口函数 2 1.1.4 start.c代码分析 2 1.2 编译代码 3 1.2.1 安装Visual Studio 3 1.2.2 ...

Global site tag (gtag.js) - Google Analytics