arrols
asked on
Need to check if script has ran, Version of client and then run command
Hi Guy's,
I would be very gratefull if someone could assistme with a script I'm trying to create. First let me give you a little back ground, we have an app that is used through out the company, this app's settings etc is controlled via settings in HKLM > Software > Policies >AppName, the company has decided it wants to update these settings by pushing out some new reg settings. After some testing it was found this was best done by deleting the old settings 1st of all and then apllying the new, to make matters more complicated we have a mix of Win XP and Win 7.
The script that I have hobbled together tries to do the following:
I would be very gratefull if someone could assistme with a script I'm trying to create. First let me give you a little back ground, we have an app that is used through out the company, this app's settings etc is controlled via settings in HKLM > Software > Policies >AppName, the company has decided it wants to update these settings by pushing out some new reg settings. After some testing it was found this was best done by deleting the old settings 1st of all and then apllying the new, to make matters more complicated we have a mix of Win XP and Win 7.
The script that I have hobbled together tries to do the following:
Check for the presence of a certain regkey to see if the script should be run (Regkey found at HKCU > Software >AppName. If the Reg key does not exists it should carry on, if it does the entire script should stop.
If the script is to continue check to see if client is XP or Win 7 by checking for the folder C:\Users and then run the appropriate commands.
Add the Regkey mentioned above so that the script does not run again.
on error resume next
Dim WSHShell, RNetKey, SetRNetRanValue, wshEnvironment, Folder, AppName1, AppName2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = CreateObject("WScript.Shell")
Set wshEnvironment = wshShell.Environment("System")
Set oWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colOSInfo = oWMIService.ExecQuery("Select * from Win32_OperatingSystem")
set shell = WScript.CreateObject("WScript.Shell")
RNetKey = "HKCU\Software\AppName\"
SetRNetRanValue = WSHShell.RegRead(RNetKey & "SetRNetRan")
AppName1 = "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\AppName\"
AppName2 = "HKEY_CURRENT_USER\SOFTWARE\Policies\AppName\"
Set oshell = CreateObject("WScript.Shell")
Err.Clear
strRegKey = oshell.RegRead ("HKCU\Software\AppName\")
If Err.Number <> 0 Then
If objFSO.FolderExists("C:\Users") Then
Set objShell = CreateObject("Shell.Application")
'Pass a bogus argument with leading blank space, say [ uac]
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
on error resume next
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.RegDelete AppName1
WSHShell.RegDelete AppName2
WSHShell.Run "regedit /s \\servername\install\AppName.reg"
WScript.Quit
Else
WSHShell.RegDelete AppName1
WSHShell.RegDelete AppName2
WshShell.Run "regedit /s \\servername\install\AppName.reg"
WScript.Quit
End If
if not SetRNetRanValue = "1" Then
RunSetRNetLocation RNetKey
Else
'WScript.echo "SetRnetRan set"
End If
Function RunSetRNetLocation( RNetKey)
'wscript.echo "SetRNetRan not set"
WshShell.RegWrite RNetKey, 0 ,"REG_SZ"
WSHShell.RegWrite RNetKey & "\" & "SetRNetRan", "1"
WScript.Quit
End Function
End
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Glad I could help. One minor thing it would probably be wise to include a fall through if you don't detect one of the desired OSes. One of my scripts cleans up all the local temp folder for all profiles on the system. I wrote it prior to Windows 7 being release it didn't have a test for it. So when it first run on Windows 7 it didn't just delete my temp folder, it cleanup my desktop, favorites and other folders under my profile. Ouch! So I changed the code to fall through and say "Unsupported OS" if it finds something I didn't expect at the time of coding.
ASKER
Cheers