Scripting main features include:
Registry Read and Modify
File content modifications such as hosts, services files
File property modification and file copying
System environment variable Settings
And so on, for reference only
Copy Code code as follows:
' SAP setup Script
' Writing: SCZ 2005.04.20
' Last Modification Date: 2005.04.22
' Directory must exist: BW (patch file) and login interface
'========================================================================
' Global variables, process
'========================================================================
WScript.Echo "This script can only run correctly under WIN2000/XP/2003 operating system administrator privileges, press ' OK ' to continue"
Set objFSO = CreateObject ("Scripting.FileSystemObject") ' File system object
Strwindir = Getwindir () ' Get Windows directory
Strsystem = Getsystempath () ' Get system directory
Strsappath = Getsappath () ' SAP frontend directory
Strsapguipath = Strsappath & "SAPgui" SAPgui Directory
Strsapbwpath = Strsappath & "BW" BW Directory
Strhostpath = Directory of Gethostfilepath () ' Host file
Strservicespath = Directory of Getservicespath () ' Services files
Call CopyFiles () ' Copy file
Call Modifyhost (Strhostpath) ' Modify host File
Call Modifyservices (Strservicespath) ' Modify Services file
Call SETEVN (strsapguipath) ' Set environment variable
Call Settcpip (Strservicespath) ' Modify TCPIP parameters
WScript.Echo "BW settings are processed, please install SAP system patches Manually"
'========================================================================
' Get the SAP Frontend directory by registering
'========================================================================
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 registration information failed to read, SAP is not installed or system is corrupted, installation terminated"
Err.Raise (507)
Err.Clear
End If
End Function
'========================================================================
' Get Windows directory
'========================================================================
Function Getwindir ()
Const Windowfolder = 0
Set Getwindir = Objfso.getspecialfolder (Windowfolder)
End Function
'========================================================================
' Get the system directory
'========================================================================
Function Getsystempath ()
Const Systemfolder = 1
Set Getsystempath = Objfso.getspecialfolder (Systemfolder)
End Function
'========================================================================
' Get the directory where the host file resides
'========================================================================
Function Gethostfilepath ()
Gethostfilepath = Strsystem & "Driversetc"
End Function
'========================================================================
' Get the directory where the services file resides
'========================================================================
Function Getservicespath ()
Getservicespath = Strsystem & "Driversetc"
End Function
'========================================================================
' Copy files
'========================================================================
Function CopyFiles ()
If not objfso.folderexists (Strsapbwpath) Then
WScript.Echo "BW component is not installed, please install the BW component of SAP before running the script"
Err.Raise (507)
Err.Clear
End If
Call Clearattribs (Strsapbwpath)
Objfso.copyfile "Landing Interface *.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
'========================================================================
' Remove file read-only property
'========================================================================
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
'========================================================================
' Remove file read-only property
'========================================================================
Function Clearfileattrib (strfile)
If objfso.fileexists (strfile) Then
Set f = objfso.getfile (strfile)
F.attributes = 0
End If
End Function
'========================================================================
' Modify the Host file
'========================================================================
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
'========================================================================
' Modify a Services file
'========================================================================
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
'========================================================================
' Set Environment variables
'------------------------------------------------------------------------
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
'========================================================================
'========================================================================
' Set TCP/IP parameters
'------------------------------------------------------------------------
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
'========================================================================