可以从一台远程服务器运行 SP2 安装程序Install.vbs

Install.vbs
发布者 Microsoft Corporation 脚本专家

此脚本由 scenario1.vbs 在一台网络主机上启动。Install.vbs 可以在安装了 SP2 的主机上以本地方式运行,它执行以下任务:

? 从一台远程服务器运行 SP2 安装程序。

? 在主机上设置 AutoAdmin 和 RunOnce 两个注册表项。

? 将结果记录到文本文件 computername-sp2-instlog.txt 并将该文件复制回管理工作站。

? 强制重新启动,随后 runonce.vbs 将自动启动。

在基本方案中,SP 2 安装程序文件位于列表中的所有网络主机均可访问的一台远程服务器上。在该方案的某种变化方案中,如果将 SP 2 安装程序复制到本地主机并从这里运行,则应重命名此脚本(例如重命名为 install-remote.vbs),然后将 install-local.vbs 重命名为 install.vbs。您还必须对这些脚本中提到的 scenario1.vbs 和新的 install.vbs 做一些细微更改。

有关方案 1 以及各个脚本的作用的进一步说明,请参见对这些脚本的介绍,网址是:

http://www.microsoft.com/technet/scriptcenter/solutions/appcompat.msxp

Install.vbs 对应于 install.cmd,但增加了一些新功能;install.cmd 是 Application Compatibility Testing and Mitigation Guide for Windows XP Service Pack 2(Windows XP Service Pack 2 应用程序兼容性测试和缓解指南)“附录”中介绍的附带脚本之一。您可以从以下网址下载用来安装该指南及其关联脚本的 Windows Installer (.msi) 文件:

http://www.microsoft.com/downloads/details.aspx?FamilyId=9300BECF-2DEE-4772-ADD9-AD0EAF89C4A7&displaylang=en

要使用此脚本,请复制代码,将代码粘贴到记事本中,然后将脚本另存为 install.vbs。此脚本被设计成了作为 scenario1.vbs 启动的进程的一部分自动运行。

脚本代码

代码如下:

'****************************************************************************** 
'install.vbs 
'Author: Peter Costantini, the Microsoft Scripting Guys 
'Date: 9/1/04 
'Must be deployed to a client and launched remotely by scenario1.vbs. 
'Assumes that runonce.vbs is in same directory as script. 
'Assumes that Windows XP Service Pack 2 setup program is on a remote server 
'and runonce.vbs are in same directory as script. 
'1. Runs Service Pack 2 setup program from remote server to install 
'   Windows XP Service Pack 2. This could take one or two hours. 
'2. Configures the AutoAdmin and RunOnce registry settings necessary 
'   to run runonce.vbs. 
'3. Logs results to text file, <computername>-sp2-instlog.txt and copies 
'   the file back to admin workstation. 
'4. Forces a reboot of the local machine so that the AutoAdmin and RunOnce  
'   registry settings take effect. 
'******************************************************************************

On Error Resume Next

'Initialize global constants and variables. 
Const FOR_APPENDING = 8 
g_strLocalFolder = "c:\temp-ac" 
'Change name of computer to actual administrative workstation or local  
'path to which log should be copied. 
g_strRemoteFolder = "\\<adminwkstn>\c$\temp-ac"

'Get computer name. 
g_strComputer = GetComputerName 
g_strLogFile = g_strComputer & "-sp2-instlog.txt"

'Create log file. 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextStream = objFSO.OpenTextFile(g_strLogFile, FOR_APPENDING, True) 
objTextStream.WriteLine "Windows XP Service Pack 2 " & _ 
 "Installation and Configuration Log: Phase 1" 
objTextStream.WriteLine Now 
objTextStream.WriteLine g_strComputer 
objTextStream.WriteLine String(Len(g_strComputer), "-")

'Handle logic of calling functions and sub-routines to install Service Pack 2 
'and configure AutoAdministration. 
blnInstallSP = InstallSP 
If blnInstallSP = False Then 
  CopyLog 
  WScript.Quit 
End If 
blnAutoAdmin = ConfigAutoAdmin 
If blnAutoAdmin = False Then 
  CopyLog 
  WScript.Quit 
End If 
Reboot

'******************************************************************************

Function GetComputerName

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\." _ 
 &"\root\cimv2") 
Set colSystems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem") 
For Each objSytem In colSystems 
  GetComputerName = objSytem.Name 
Next

End Function

'******************************************************************************

Function InstallSP

'Edit this line to include the server and share name where the Windows XP 
'Service Pack 2 setup program is located. 
strInstallPath = "\\servername\xpsp2\WindowsXP-KB835935-SP2-ENU.exe " & _ 
 "/quiet /norestart /o"

Set WshShell = CreateObject("Wscript.Shell") 
Set objExec = WshShell.Exec(strInstallPath)  
'This could take one or two hours. 
objTextStream.WriteLine "Installation started ..." 
If Err = 0 Then 
'Loop until Exec is finished - Status = 1. 
  Do While objExec.Status = 0 
'Pause for 10 seconds before checking. 
'To reduce network traffic, make interval longer. 
    WScript.Sleep 10000 
  Loop 
  objTextStream.WriteLine "Service Pack 2 installation completed." 
  InstallSP = True 
Else 
  objTextStream.WriteLine "Unable to install Service Pack 2." & VbCrLf & _ 
   "Error connecting to Service Pack 2 on server." & VbCrLf & _ 
   "Error number: " & Err.Number & VbCrLf & _ 
   "Error source: " & Err.Source & VbCrLf & _ 
   "Error description: " & Err.Description 
  InstallSP = False 
End If 
Err.Clear

End Function

'******************************************************************************

Function ConfigAutoAdmin

Const HKEY_LOCAL_MACHINE = &H80000002 
strKeyPath1 = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" 
strKeyPath2 = "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" 
strDefaultUserName = "Administrator" 
strDefaultPassword = "P@ssw0rd" 
strDefaultDomainName = "Contoso" 
intAutoAdminLogon = 1 
strRunOnceEntry = "MyScript" 
strRunoncePath = g_strLocalFolder & "\runonce.vbs"

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
 g_strComputer & "\root\default:StdRegProv")

'Set strDefaultUserName to user with Administrator credentials. 
intRet1 = objReg.SetStringValue(HKEY_LOCAL_MACHINE, strKeyPath1, _ 
 "DefaultUserName", strDefaultUserName) 
If intRet1 <> 0 Then 
  objTextStream.WriteLine "Error: DefaultUserName not configured." 
End If

'Set strDefaultPassword to password of default username. 
intRet2 = objReg.SetStringValue(HKEY_LOCAL_MACHINE, strKeyPath1, _ 
 "DefaultPassword", strDefaultPassword) 
If intRet2 <> 0 Then 
  objTextStream.WriteLine "Error: DefaultPassword not configured." 
End If

'Uncomment next 5 lines and edit last parameter if default domain 
'for the credentials is different from that already set. 
'intRet3 = objReg.SetStringValue(HKEY_LOCAL_MACHINE, strKeyPath1, _ 
' "DefaultDomainName", strDefaultDomainName) 
'If intRet3 <> 0 Then 
'  objTextStream.WriteLine "Error: DefaultDomainName not configured." 
'End If

'Turn on AutoAdminLogon 
intRet4 = objReg.SetStringValue(HKEY_LOCAL_MACHINE, strKeyPath1, _ 
 "AutoAdminLogon", "1") 
If intRet4 <> 0 Then 
  objTextStream.WriteLine "Error: AutoAdminLogon not configured." 
End If

'Add MyScript entry to RunOnce subkey. 
intRet5 = objReg.SetStringValue(HKEY_LOCAL_MACHINE, strKeyPath2, _ 
 strRunOnceEntry, strRunoncePath) 
If intRet5 <> 0 Then 
  objTextStream.WriteLine "Error: MyScript RunOnce entry not configured." 
End If

'Check that all registry write operations succeeded. 
If (intRet1 + intRet2 + intRet3 + intRet4 + intRet5) = 0 Then 
  objTextStream.WriteLine "AutoAdminLogon and RunOnce configured." 
  ConfigAutoAdmin = True 
Else 
  objTextStream.WriteLine "Error: AutoAdminLogon and RunOnce not fully " & _ 
   "configured." 
  ConfigAutoAdmin = False 
End If

End Function

'******************************************************************************

Sub Reboot

Const FORCED_REBOOT = 6 
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate," & _ 
 "(Shutdown)}!\\" & g_strComputer & "\root\cimv2") 
Set colOSes = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
objTextStream.WriteLine "Attempting to reboot ..." 
CopyLog 
For Each objOS In colOSes 'Only one objOS in collection 
  intReturn = objOS.Win32Shutdown(FORCED_REBOOT) 
  If intReturn <> 0 Then 
    Set objTextStream = objFSO.OpenTextFile(g_strLogFile, FOR_APPENDING, True) 
    objTextStream.WriteLine Now 
    objTextStream.WriteLine "Error: Unable to reboot. " & VbCrLf & _ 
     "Return code: " & intReturn 
  CopyLog 
  End If 
Next

End Sub

'******************************************************************************

Sub CopyLog

'Close text file. 
objTextStream.WriteLine "Closing log and attempting to copy file to " & _ 
 "administrative workstation." 
objTextStream.WriteLine 
objTextStream.WriteLine String(80, "-") 
objTextStream.WriteLine 
objTextStream.Close

'Copy log. 
If Not objFSO.FolderExists(g_strRemoteFolder) Then 
  objFSO.CreateFolder(g_strRemoteFolder) 
  If Err <> 0 Then 
    Err.Clear 
    Exit Sub 
  End If 
End If 
objFSO.CopyFile g_strLogFile, g_strRemoteFolder & "\"

End Sub

要获得在线同行支持,请加入 msnews.microsoft.com 新闻服务器上的 microsoft.public.windows.server.scripting 社区。要提供反馈或报告示例脚本或“脚本指南”中的错误,请联系 Microsoft TechNet。

免责声明

此示例脚本不受任何 Microsoft 标准支持计划或服务的支持。这里仅按原样提供示例脚本,而不作任何类型的担保。Microsoft 进一步明确拒绝所有的暗示担保,包括但不限于对适销性或对特定目的适用性的任何暗示担保。使用或执行示例脚本和文档所引起的全部风险应由您自己承担。在任何情况下,对于使用或不能使用示例脚本或文档所引起的任何损害(包括但不限于商业利润损失、业务中断、商业信息丢失或其他资金损失所造成的损害),Microsoft、其作者以及参与脚本创建、生产或传递的任何其他人员都概不负责,即使 Microsoft 已被告知存在这些损害的可能性。

(0)

相关推荐

  • java判断远程服务器上的文件是否存在的方法

    在做数据文件导入到   LEFTII   中是遇到一个文件,在做导入的时候有时候生成的原始文件可能不存在,现在通过加一个判断,判断文件是否存在,起初以为简单的判断文件   file.exists()   存不存在就行了,但是后来事实证明这个只能判断本地的文件是否存在. 这里我们通过一个巧妙的方法告诉大家,就是把远程的文件共享到本地来,通过电脑的衍射可以轻而易举的解决这个问题 过程如下 然后在下面的步骤输入用户名,密码,这样就可以通过判断本地是否存在这个文件就搞定了.

  • 利用xcopy命令实现本地文件复制到远程服务器的方法

    A.net use \\IP地址 密码/user:****** B.xcopy 文件 \\IP地址\ 批处理文件为backup.bat,其代码如下: ========================================================================================= net use \\192.168.1.198\ipc$ Zqf198703 /user:royalpeak xcopy g:\backup\*.* \\192.168.

  • 将MSSQL Server 导入/导出到远程服务器教程的图文方法分享

    1.打开本地企业管理器,先创建一个SQL Server注册来远程连接服务器端口SQL Server.步骤如下图: 图1: 2.弹出窗口后输入内容."总是提示输入登陆名和密码"可选可不选,如图2. 图2: 3.注册好服务器后,点击打开.如果是选择了"总是提示输入登陆名和密码"的话再点了确定后会提示输入用户密码,如图3. 图3: 4.进入后,选择到您的数据库,如testdb.在上面点右键,"所有任务">>"导入数据",

  • python 从远程服务器下载日志文件的程序

    复制代码 代码如下: import osimport sysimport ftplibimport socket ################################################################### sign in the ftp server and download the log file. # 登陆生产服务器下载日志##############################################################

  • python 从远程服务器下载东西的代码

    复制代码 代码如下: # _*_ coding:utf-8 _*_# name gefile.pyimport osimport statimport socketimport paramikoFILES=["filenameA","filenameB","filenameC","filenameD","filenameE"]USERNAME="root"PASSWORD="1

  • 利用ASP从远程服务器上接收XML数据的方法

    复制代码 代码如下: <%  dim objXML  dim objRootElement  dim strValue  dim strInetURL  dim strXML  dim item              strInetURL ="http://pf.inetsolution.com/inetactive2001/inetactive2001news.xml"  Dim HttpReq   set HttpReq = server.CreateObject(&qu

  • ColdFusion MX 远程服务实例入门教程

    这个教程分二个部分:1 创建CF组件2创建flash应用.在开始之前请新建一个站点.一 创建CF组件:这里我们创建一个组件 定义二个函数[chaxun1,chaxun2],函数使用exampleapps 数据库源,返回一个查询结果对象, flash电影文件调用组件方法和接收返回的查询结果.chaxun1函数需要三个参数,这些参数从flash电影中传递过来.(参数为xing ming cheng)    创建的步奏如下所示: 使用dwmx(Dreamweaver MX的简称,下同), 文件→新建:

  • C# FTP,GetResponse(),远程服务器返回错误

    FtpWebRequest类实现ftp功能的一般过程 1.创建一个FtpWebRequest对象,指向ftp服务器的uri 2.设置ftp的执行方法(上传,下载等) 3.给FtpWebRequest对象设置属性(是否支持ssl,是否使用二进制传输等) 4.设置登录验证(用户名,密码) 5.执行请求 6.接收相应流(如果需要的话) 7.如果没有打开的流,则关闭ftp请求 其中一些重要的属性如下: ·Credentials - 指定登录ftp服务器的用户名和密码. ·KeepAlive - 指定连接

  • Android远程服务编写和调用教程

    网上汗牛充栋的文章都是介绍Android远程服务的,一个个将Binder机制.AIDL讲得头头是道,然而没有几个人能够给出清晰的范例说明如何用最快的方法学会编写和调用一个Android远程服务.若你仅仅是想如何编写或者调用Android的远程服务,而懒得去理解Binder机制是如何运行的,那么本篇文章正好适合你.毕竟现在人人都会开车,但没有几个人明白发动机到底是如何运作的. 预备知识 读者应该有基本的java知识,和Android简单app的开发经验. 环境 代码运行环境: 1.ADT2014版

  • 可以从一台远程服务器运行 SP2 安装程序Install.vbs

    Install.vbs 发布者 Microsoft Corporation 脚本专家 此脚本由 scenario1.vbs 在一台网络主机上启动.Install.vbs 可以在安装了 SP2 的主机上以本地方式运行,它执行以下任务: ? 从一台远程服务器运行 SP2 安装程序. ? 在主机上设置 AutoAdmin 和 RunOnce 两个注册表项. ? 将结果记录到文本文件 computername-sp2-instlog.txt 并将该文件复制回管理工作站. ? 强制重新启动,随后 runo

  • 在同一台机器上运行多个 MySQL 服务

    ********************************************************** 第一部分, 在一台服务器构建多mysql 服务. ********************************************************** 一,绪言 在Mysql中有一mysqld_multi命令,可用于在一台物理服务器运行多个Mysql服务,今天参考一些文档,亲自测试并通过,真高兴,现将操作过程共享给大家! 操作系统:Linux 2.6.13 (Sl

  • Pycharm连接远程服务器并实现远程调试的实现

    当需要远程办公时,使用pycharm远程连接服务器时必要的. PyCharm提供两种远程调试(Remote Debugging)的方式: 配置远程的解释器(remote interpreter) 配置Python调试服务器(Python Debug Server) 本篇文章主要介绍配置远程解释器,关于配置 python调试服务器,文末也会简单介绍. 1. Pycharm连接远程服务器 1.1 进入配置页面 Pycharm菜单栏,如下图所示,依次点击 Tools -> Deployment ->

  • IDEA连接远程服务器Docker部署Spring Boot项目的详细教程

    开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:https://www.jb51.net/article/188048.htm,其中有详细的讲解 Windows上有安装IDEA 正式开始工作 第一步:配置Docker,开启远程访问(注:仅供学习参考,实际生产环境万万不可,会产生很大的安全风险),默认端口是2375,也可以修改为其他端口 1.修改/lib/

  • scp 将数据从一台linux服务器复制到另一台linux服务器

    scp 是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且 scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来.另 外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了.虽然 rsync比scp会快一点,但当小文件众多的情况 下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用.

  • 用python写个自动SSH登录远程服务器的小工具(实例)

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的打造一个在Linux/Mac os运行的自动ssh登录远程服务器的小工具. 来个GIF动画示例下先: 概述 我们先理一下我们需要些什么功能: 1. 添加/删除连接服务器需要的IP,端口,密码 2. 自动输入密码登录远程服务器 对,我们就做这么简单的功能 开始写代码 代码比较长,所以我也放在在Gith

  • Python使用Paramiko模块编写脚本进行远程服务器操作

    简介: paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器. 安装所需软件包: http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.5.tar.gz http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz tar zxvf pycrypto-2.5.tar.gz cd pycrypto-2.5 python se

  • 利用python 更新ssh 远程代码 操作远程服务器的实现代码

    用python paramiko ssh 服务器,并pull对应目录代码的脚本 pull.py import paramiko import sys def sshclient_execmd(hostname, port, username, password, execmd): paramiko.util.log_to_file("paramiko.log") s = paramiko.SSHClient() s.set_missing_host_key_policy(paramik

  • 详解用Python实现自动化监控远程服务器

    最近发现Python课器做很多事情,在监控服务器有其独特的优势,耗费资源少,开发周期短. 首先我们做一个定时或者实时脚本timedtask.py,让其定时监控目标服务器,两种方式: 第一种: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/11/27 15:59 # @Desc : 定时任务,以需要的时间间隔执行某个命令 # @File : timedtask.py # @Software: PyCharm import

随机推荐