3/22/2010

Collecting NSD file using VBScript

 Some of you may have experience to create batch file to kick NSD command.
I also created the batch file like that but I hated to edit the batch file every time it is copied to a different environment. this is why I created this command with VBScript.
By using VBScript, I can access registry value thus Notes program/data directory information can be retrieved from the registry.

You can run this VBS file just by copying it to any directory on your computer and double-click the file. so I think this sample is useful when you want to access Notes program/data directory automatically in the batch file.



RunNSD.vbs
Function GetProgramDir()
  GetProgramDir = ""
  Dim objWshShell
  Set objWshShell = WScript.CreateObject("WScript.Shell")
  strValue = objWshShell.RegRead("HKLM\SOFTWARE\Lotus\Notes\Path")
  if Right(strValue,1) <> "\" Then
    strValue = strValue & "\"
  End if
  GetProgramDir = strValue 
End Function

Function GetDataDir()
  GetDataDir = ""
  Dim objWshShell
  Set objWshShell = WScript.CreateObject("WScript.Shell")
  strValue = objWshShell.RegRead("HKLM\SOFTWARE\Lotus\Notes\DataPath")
  if Right(strValue,1) <> "\" Then
    strValue = strValue & "\"
  End if
  GetDataDir = strValue 
End Function

Function IsWin2k()
 IsWin2k = False
 strComputer = "." 
 Set objWMIService = GetObject("winmgmts:" _ 
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
 Set colOperatingSystems = objWMIService.ExecQuery _ 
     ("Select * from Win32_OperatingSystem") 
 For Each objOperatingSystem in colOperatingSystems 
     If Instr (objOperatingSystem.Caption, "Windows 2000") > 0 Then
  IsWin2k = True
     End If
 Next 
End Function

Dim objWshShell
Dim strCmdLine
Set objWshShell = WScript.CreateObject("WScript.Shell")
NSDPath = GetProgramDir() & "nsd.exe"
objWshShell.CurrentDirectory = GetDataDir()

If Not isWin2k() Then
   strOption = " -detach"
End If

strCmdLine = NSDPath & strOption
objWshShell.Exec(strCmdLine)

If Err.Number <> 0 Then
  WScript.Echo "NSD Error " & Err.Description
End If


NOTE:
- This VBS file checks registry file regarding Notes client.
   If you want to run this file on the environment as follows, you need to change registry path.
   1) Multi user installation
   2) Old version (prior to Lotus Notes 6.5.x)
   3) Lotus Domino Server

- "-detach" option is not actually needed on the latest version like 8.5.x or 8.0.x 
   I added this option so that I just wanted to show OS check logic can be added

- If you want to clean up client after NSD execution, please change strOption as follows.
  strOption = " -DumpAndKill"

No comments:

Post a Comment