华域联盟 vbs WINDOWS脚本实践:为SAP补丁制作的VBS脚本代码

WINDOWS脚本实践:为SAP补丁制作的VBS脚本代码

脚本主要功能包括:

注册表读取与修改 

文件内容修改如HOSTS、SERVICES文件 

文件属性修改和文件复制 

系统环境变量设置 

等,仅供参考 

复制代码 代码如下:

'SAP设置脚本 

'编写:SCZ 2005.04.20 

'最后修改日期: 2005.04.22 

'必须存在目录: BW(补丁文件) 和 登入界面 

'======================================================================== 

'全局变量、处理过程 

'======================================================================== 

WScript.Echo "该脚本只能正常运行在WIN2000/XP/2003的操作系统管理员权限下,按'确定'继续" 

Set objFSO = CreateObject("Scripting.FileSystemObject") '文件系统对象 

strWindir = GetWindir()                    '获取WINDOWS目录 

strSystem = GetSystemPath()                '获取System目录 

strSapPath = GetSAPPath()                 'SAP FrontEnd目录 

strSapGuiPath = strSapPath & "SAPgui"            'SapGui目录 

strSapBWPath = strSapPath & "BW"            'BW目录 

strHostPath = GetHostFilePath()             'host 文件所在目录 

strServicesPath = GetServicesPath()             'services 文件所在目录 

Call CopyFiles()                    '复制文件 

Call ModifyHost(strHostPath)                '修改HOST文件 

Call ModifyServices(strServicesPath)            '修改SERVICES文件 

Call SetEvn(strSapGuiPath)                '设置环境变量 

Call SetTCPIP(strServicesPath)                '修改TCPIP参数 

WScript.Echo "BW设置处理完毕,请手动安装SAP系统补丁" 

'======================================================================== 

'通过注册获取SAP FrontEnd目录 

'======================================================================== 

Function GetSAPPath() 

    Const HKEY_LOCAL_MACHINE = &H80000002 

    strComputer = "." 

    Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _ 

         strComputer & " ootdefault:StdRegProv") 

    strKeyPath = "SOFTWARESAPSAP Shared" 

    strEntryName = "SAPdestdir" 

    objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strValue 

    GetSAPPath = strValue 

    If IsNull(strValue) Then  

        Wscript.Echo "SAP注册信息读取失败,SAP未安装或系统已损坏,安装终止" 

        Err.Raise(507) 

        Err.Clear 

    End If 

End Function 

'======================================================================== 

'获取WINDOWS目录 

'======================================================================== 

Function GetWindir() 

    Const WindowFolder = 0 

    Set GetWindir = objFSO.GetSpecialFolder(WindowFolder) 

End Function 

'======================================================================== 

'获取SYSTEM目录 

'======================================================================== 

Function GetSystemPath() 

    Const SystemFolder = 1 

    Set GetSystemPath = objFSO.GetSpecialFolder(SystemFolder) 

End Function 

'======================================================================== 

'获取HOST文件所在目录 

'======================================================================== 

Function GetHostFilePath() 

    GetHostFilePath = strSystem & "driversetc" 

End Function 

'======================================================================== 

'获取Services文件所在目录 

'======================================================================== 

Function GetServicesPath() 

    GetServicesPath = strSystem & "driversetc" 

End Function 

'======================================================================== 

'复制文件 

'======================================================================== 

Function CopyFiles() 

    If NOT objFSO.FolderExists(strSapBWPath) Then   

        WScript.Echo "BW组件未安装,请先安装SAP的BW组件,再运行该脚本" 

        Err.Raise(507) 

        Err.Clear 

    End If 

    Call ClearAttribs(strSapBWPath) 

    objFSO.CopyFile "登陆界面*.ini" , strWindir 

    objFSO.CopyFile "BWgssntlm.dll" , strSapGuiPath & "gssntlm.dll" 

    objFSO.CopyFile "BWsncgss32.dll" , strSystem  & "sncgss32.dll" 

    strBakFolder =strSapBWPath & "ak" 

    IF NOT objFSO.FolderExists(strBakFolder) Then   

        objFSO.CreateFolder(strBakFolder) 

    Else  

        Call ClearAttribs(strBakFolder) 

    End If 

    objFSO.CopyFile strSapBWPath & "*.xla" , strBakFolder 

    objFSO.CopyFile "BW*.xla" , strSapBWPath 

End Function 

'======================================================================== 

'去除文件只读属性 

'======================================================================== 

Function ClearAttribs(strFolder) 

    Call ClearFileAttrib(strFolder & "sapbex.xla") 

    Call ClearFileAttrib(strFolder & "sapbexc.xla") 

    Call ClearFileAttrib(strFolder & "sapbexs.xla") 

    Call ClearFileAttrib(strFolder & "sapbex0.xla") 

    Call ClearFileAttrib(strSystem  & "sncgss32.dll") 

End Function 

'======================================================================== 

'去除文件只读属性 

'======================================================================== 

Function ClearFileAttrib(strFile) 

    If objFSO.FileExists(strFile) Then  

        Set f = objFSO.GetFile(strFile) 

        f.Attributes = 0 

    End If  

End Function 

'======================================================================== 

'修改HOST文件 

'======================================================================== 

Function ModifyHost(strHostPath) 

    strHostFile = strHostPath & "hosts" 

    strHostBak = strHostPath & "hosts.bak" 

    Const ForReading = 1, ForWriting = 2, ForAppending = 8 

    objFSO.CopyFile strHostFile , strHostBak 

    Set objFile = objFSO.OpenTextFile(strHostFile, ForReading, False) 

    strContents = objFile.ReadAll 

    objFile.Close 

    Set objFile = objFSO.OpenTextFile(strHostFile, ForAppending, False) 

    objFile.WriteBlankLines 1 

    compResult = Instr(strContents,"192.168.0.136") 

    If compResult = 0 Then objFile.WriteLine("192.168.0.136" & Chr(9) & "bwprd") 

    compResult = Instr(strContents,"192.168.0.135") 

    If compResult = 0 Then objFile.WriteLine("192.168.0.135" & Chr(9) & "bwdev") 

    compResult = Instr(strContents,"192.168.0.171") 

    If compResult = 0 Then objFile.WriteLine("192.168.0.171" & Chr(9) & "bwqas") 

    objFile.close 

End Function  

'======================================================================== 

'修改SERVICES文件 

'======================================================================== 

Function ModifyServices(strServicesPath) 

    strServicesFile = strServicesPath & "services" 

    strServicesbak = strServicesPath & "services.bak" 

    Const ForReading = 1, ForWriting = 2, ForAppending = 8 

    objFSO.CopyFile strServicesFile , strServicesbak 

    Set objFile = objFSO.OpenTextFile(strServicesFile, ForReading, False) 

    strContents = objFile.ReadAll 

    objFile.Close 

    Set objFile = objFSO.OpenTextFile(strServicesFile, ForAppending, False) 

    objFile.WriteBlankLines 1 

    compResult = Instr(strContents, "sapmsP01") 

    If compResult = 0 Then objFile.WriteLine("sapmsP01" & Chr(9) & "3600/tcp") 

    objFile.Close 

End Function  

'======================================================================== 

'设置环境变量 

'------------------------------------------------------------------------ 

Function SetEvn(strSapGuiPath) 

    strComputer = "." 

    Set objWMIService = GetObject("winmgmts:\" & strComputer & " ootcimv2") 

    Set colItems = objWMIService.ExecQuery( "Select * from Win32_Environment where name = 'SNC_LIB'") 

    Found = False 

    For Each objItem in colItems 

        If UCase(objItem.Name) = "SNC_LIB" Then 

                Found = True 

                objItem.VariableValue = strSapGuiPath & "gssntlm.dll" 

                objItem.Put_ 

           End If 

    Next 

    If (Found = False) Then   

            Set oEvn = objWMIService.Get("Win32_Environment").Spawninstance_ 

            oEvn.Name = "SNC_LIB" 

            oEvn.VariableValue = strSapGuiPath & "gssntlm.dll" 

            oEvn.SystemVariable = True 

            oEvn.UserName = "<SYSTEM>" 

            oEvn.Status = "OK" 

            Set oPath = oEvn.Put_ 

     End If 

End Function 

'======================================================================== 

'======================================================================== 

'设置TCP/IP参数 

'------------------------------------------------------------------------ 

Function SetTCPIP(strServicesPath) 

    Const HKEY_LOCAL_MACHINE = &H80000002 

    strComputer = "." 

    Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _ 

         strComputer & " ootdefault:StdRegProv") 

    strKeyPath = "SYSTEMCurrentControlSetServicesTcpipParameters" 

    strEntryName = "DataBasePath" 

    objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strServicesPath 

End Function 

'========================================================================

本文由 华域联盟 原创撰写:华域联盟 » WINDOWS脚本实践:为SAP补丁制作的VBS脚本代码

转载请保留出处和原文链接:https://www.cnhackhy.com/14484.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部