#46768 - 2003-10-16 12:22 AM
How to use Scheduletask () for multiple tasks/servers?
Co
MM club member
Registered: 2000-11-20
Posts: 1341
Loc: NL
Any idea how i can use Scheduletask() for 35 servers? In the past i used a script like: At \\server1 17:15 scopy /o /a /s \\distrisrv1\cdfoon d:\cdfoon At \\server2 17:45 scopy /o /a /s \\distrisrv1\cdfoon d:\cdfoon At \\server3 18:15 scopy /o /a /s \\distrisrv1\cdfoon d:\cdfoon etc. I want to use the Scheduletask() UDF the same way With this script I can schedule only one task:code: $name='test' $comp='sasntest' $date='TODAY' $time='now' $type='ONCE' $cmd='notepad' $user='admin' $pw='adminpw' ;$comment='test' ;$jt= 'c:\jt.exe' ?@ERROR scheduletask($name, $comp, $date, $time, $type, $cmd, $user, $pw) ?@ERROR ? @SERROR :END Sleep 30 Exit ;FUNCTION ScheduleTask ; ;ACTION Schedules a task on any computer using the Task Scheduler ; ;AUTHOR Jens Meyer (sealeopard@usa.net) ; ;KIXTART BBS http://www.kixtart.org/board/ultimatebb.php?ubb=get_topic;f=12;t=000060 ; Function scheduletask($name, $comp, $date, $time, $type, $cmd, optional $prms, optional $user, optional $pw, optional $comment, optional $typeargs, optional $jt) Dim $jtexe[3], $shellcmd, $path If $name='' OR $comp='' OR $date='' OR $time='' OR $type='' OR $cmd='' ? @ERROR Exit 87 EndIf ; create an array of potential filepaths to jt.exe $jtexe[0]=$jt $jtexe[1]='c:\jt.exe' $jtexe[2]=@SCRIPTDIR+'\jt.exe' $jtexe[3]=@CURDIR+'\jt.exe' $path=Split('%PATH%',';') For Each $jt In $path ReDim preserve $jtexe[Ubound($jtexe)+1] $jtexe[Ubound($jtexe)]=Join(Split($jt+'\jt.exe','\\'),'\') Next ; check each filepath for the presence of jt.exe For Each $jt In $jtexe If Exist($jt) AND NOT (GetFileAttr($jt) & 16) AND Ubound($jtexe)+1 $jtexe=$jt EndIf Next Select Case Ubound($jtexe)+1 Exit 2 Case NOT Exist($jtexe) Exit 2 EndSelect If Left($comp,2)<>'\\' $comp='\\'+$comp EndIf If Right($name,4)<>'.job' $name=$name+'.job' EndIf ; delete a potentially existing task $shellcmd = $jtexe If $user AND $pw $shellcmd = $shellcmd+ ' /SC "'+$user+'" "'+$pw+'"' EndIf $shellcmd = $shellcmd+ ' /SM '+$comp $shellcmd = $shellcmd+ ' /SD "'+$name+'"' Shell '%COMSPEC% /e:1024 /c '+$shellcmd+' >NUL 2>NUL' $shellcmd = $jtexe If $user AND $pw $shellcmd = $shellcmd+ ' /SC "'+$user+'" "'+$pw+'"' EndIf $shellcmd = $shellcmd+ ' /SM '+$comp $shellcmd = $shellcmd+ ' /SJ ApplicationName="'+$cmd+'"' If $prms $shellcmd = $shellcmd+ ' Parameters="'+$prms+'"' EndIf $shellcmd = $shellcmd+ ' WorkingDirectory="%SYSTEMROOT%"' $shellcmd = $shellcmd+ ' Comment="'+$comment+'"' $shellcmd = $shellcmd+ ' Creator="'+@userid+'"' $shellcmd = $shellcmd+ ' Priority=Normal' $shellcmd = $shellcmd+ ' MaxRunTime=3600000' $shellcmd = $shellcmd+ ' DontStartIfOnBatteries=0' $shellcmd = $shellcmd+ ' KillIfGoingOnBatteries=0' $shellcmd = $shellcmd+ ' RunOnlyIfLoggedOn=0' $shellcmd = $shellcmd+ ' SystemRequired=0' $shellcmd = $shellcmd+ ' DeleteWhenDone=1' $shellcmd = $shellcmd+ ' Suspend=0' $shellcmd = $shellcmd+ ' StartOnlyIfIdle=0' $shellcmd = $shellcmd+ ' KillOnIdleEnd=0' $shellcmd = $shellcmd+ ' RestartOnIdleResume=0' $shellcmd = $shellcmd+ ' Hidden=0' $shellcmd = $shellcmd+ ' TaskFlags=0' $shellcmd = $shellcmd+ ' /CTJ StartDate='+$date $shellcmd = $shellcmd+ ' StartTime='+$time $shellcmd = $shellcmd+ ' HasEndDate=0' $shellcmd = $shellcmd+ ' KillAtDuration=0' $shellcmd = $shellcmd+ ' Disabled=0' $shellcmd = $shellcmd+ ' Type='+$type If $typeargs $shellcmd = $shellcmd+ ' TypeArguments='+$typeargs EndIf $shellcmd = $shellcmd+ ' /SAJ "'+$name+'"' Shell '%COMSPEC% /e:1024 /c '+$shellcmd+' >NUL 2>NUL' $scheduletask=@ERROR ? @ERROR Exit @ERROR EndFunction [ 15. October 2003, 13:01: Message edited by: Co ]
_________________________
Co
Top
#46775 - 2003-10-21 12:14 AM
Re: How to use Scheduletask () for multiple tasks/servers?
Co
MM club member
Registered: 2000-11-20
Posts: 1341
Loc: NL
New Week, new start... I modified the serialtime UDF so it uses only hours and minutes. And it works fine.. No more errors..BUT the tasks aren't scheduled!! code: ; variabelen Scheduletask function $name='test' $date='TODAY' $type='ONCE' $cmd='notepad' ; variabelen Serialtime function $timediff='00:30' $time='16:30' $comps='server1','server2' ? 'one'+Chr(9)+@error; + $comps For Each $comp In $comps $time=serialtime(serialtime($time)+ serialtime($timediff)) $rc=scheduletask($name, $comp, $date, $time, $type, $cmd) ? 'two' +Chr(9)+@error+Chr(9)+$name+Chr(9)+$comp+Chr(9)+$date+Chr(9)+$time+Chr(9)+$type+Chr(9)+$cmd next :END Sleep 30 Exit ;FUNCTION ScheduleTask ; ;ACTION Schedules a task on any computer using the Task Scheduler ; ;AUTHOR Jens Meyer (sealeopard@usa.net) ; ;VERSION 1.3 (made username/password/comment optional parameters, changed parameter order, added ; optional parameter for JT.EXE location, checks %PATH% for presence of JT.EXE) ; ;KIXTART BBS http://www.kixtart.org/board/ultimatebb.php?ubb=get_topic;f=12;t=000060 ; Function scheduletask($name, $comp, $date, $time, $type, $cmd, optional $prms, optional $user, optional $pw, optional $comment, optional $typeargs, optional $jt) Dim $jtexe[5], $shellcmd, $path $jtpathL='c:\scripts\tools' $jtpathS='\\server1\scripts\tools' If $name='' OR $comp='' OR $date='' OR $time='' OR $type='' OR $cmd='' ? 'three' +Chr(9)+@ERROR Exit 87 EndIf ; create an array of potential filepaths to jt.exe $jtexe[0]=$jt $jtexe[1]=$jtpathL+'\jt.exe' $jtexe[2]=@SCRIPTDIR+'\jt.exe' $jtexe[3]=@CURDIR+'\jt.exe' $jtexe[4]=@STARTDIR+'\jt.exe' $jtexe[5]=$jtpathS+'\jt.exe' $path=Split('%PATH%',';') For Each $jt In $path ReDim preserve $jtexe[Ubound($jtexe)+1] $jtexe[Ubound($jtexe)]=Join(Split($jt+'\jt.exe','\\'),'\') ? 'four' +Chr(9)+@ERROR Next ? 'five' +Chr(9)+@ERROR ; check each filepath for the presence of jt.exe For Each $jt In $jtexe If Exist($jt) AND NOT (GetFileAttr($jt) & 16) AND Ubound($jtexe)+1 $jtexe=$jt ? 'six' +Chr(9)+@ERROR EndIf Next Select Case Ubound($jtexe)+1 Exit 2 Case NOT Exist($jtexe) Exit 2 ? 'seven' +Chr(9)+@ERROR EndSelect If Left($comp,2)<>'\\' $comp='\\'+$comp ? 'eight' +Chr(9)+@ERROR EndIf If Right($name,4)<>'.job' $name=$name+'.job' ? 'nine' +Chr(9)+@ERROR EndIf ; delete a potentially existing task $shellcmd = $jtexe If $user AND $pw $shellcmd = $shellcmd+ ' /SC "'+$user+'" "'+$pw+'"' ? 'ten' +Chr(9)+@ERROR EndIf $shellcmd = $shellcmd+ ' /SM '+$comp $shellcmd = $shellcmd+ ' /SD "'+$name+'"' Shell '%COMSPEC% /e:1024 /c '+$shellcmd+' >NUL 2>NUL' $shellcmd = $jtexe If $user AND $pw ? 'eleven' +Chr(9)+@ERROR $shellcmd = $shellcmd+ ' /SC "'+$user+'" "'+$pw+'"' EndIf $shellcmd = $shellcmd+ ' /SM '+$comp $shellcmd = $shellcmd+ ' /SJ ApplicationName="'+$cmd+'"' If $prms $shellcmd = $shellcmd+ ' Parameters="'+$prms+'"' ? 'twelve' +Chr(9)+@ERROR EndIf $shellcmd = $shellcmd+ ' WorkingDirectory="%SYSTEMROOT%"' $shellcmd = $shellcmd+ ' Comment="'+$comment+'"' $shellcmd = $shellcmd+ ' Creator="'+@userid+'"' $shellcmd = $shellcmd+ ' Priority=Normal' $shellcmd = $shellcmd+ ' MaxRunTime=3600000' $shellcmd = $shellcmd+ ' DontStartIfOnBatteries=0' $shellcmd = $shellcmd+ ' KillIfGoingOnBatteries=0' $shellcmd = $shellcmd+ ' RunOnlyIfLoggedOn=0' $shellcmd = $shellcmd+ ' SystemRequired=0' $shellcmd = $shellcmd+ ' DeleteWhenDone=1' $shellcmd = $shellcmd+ ' Suspend=0' $shellcmd = $shellcmd+ ' StartOnlyIfIdle=0' $shellcmd = $shellcmd+ ' KillOnIdleEnd=0' $shellcmd = $shellcmd+ ' RestartOnIdleResume=0' $shellcmd = $shellcmd+ ' Hidden=0' $shellcmd = $shellcmd+ ' TaskFlags=0' $shellcmd = $shellcmd+ ' /CTJ StartDate='+$date $shellcmd = $shellcmd+ ' StartTime='+$time $shellcmd = $shellcmd+ ' HasEndDate=0' $shellcmd = $shellcmd+ ' KillAtDuration=0' $shellcmd = $shellcmd+ ' Disabled=0' $shellcmd = $shellcmd+ ' Type='+$type If $typeargs $shellcmd = $shellcmd+ ' TypeArguments='+$typeargs ? 'thirteen' +Chr(9)+@ERROR EndIf $shellcmd = $shellcmd+ ' /SAJ "'+$name+'"' Shell '%COMSPEC% /e:1024 /c '+$shellcmd+' >NUL 2>NUL' $scheduletask=@ERROR ? 'fourteen' +Chr(9)+@ERROR Exit @ERROR EndFunction ;FUNCTION SerialTime ; ;AUTHOR Jens Meyer (sealeopard@usa.net) ; ;ACTION Convert time to numbers (and back) for the purpose of performing time math ; ;VERSION 1.1 ; ;KIXTART 4.20 ; ;SYNTAX SERIALTIME(STRTIME) ; ;EXAMPLE $rc=SERIALTIME('02:20) ; ;KIXTART BBS http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=12&t=000039 ; Function serialtime($strtime) Dim $hours, $minutes If InStr($strtime,':') $strtime=Split($strtime,':') Select Case Ubound($strtime)<1 ReDim preserve $strtime[1] Case Ubound($strtime)>1 $serialtime=-1 Exit 87 EndSelect $hours=Val($strtime[0]) If $hours<0 OR $hours>23 $serialtime=-1 Exit 87 EndIf $minutes=Val($strtime[1]) If $minutes<0 OR $minutes>59 ? 'fifteen' +Chr(9)+@ERROR+Chr(9)+$serialtime $serialtime=-1 Exit 87 EndIf $serialtime=0.0+($hours*3600)+($minutes*60) Else $strtime=Val(CDbl($strtime)*1000) If $strtime<=86400000 AND $strtime>=0 $hours=$strtime/3600/1000 $strtime=$strtime-($hours*3600*1000) $hours=Right('00'+$hours,2) $minutes=$strtime/60/1000 $strtime=$strtime-($minutes*60*1000) $minutes=Right('00'+$minutes,2) $serialtime=$hours+':'+$minutes ? 'sixteen' +Chr(9)+@ERROR+Chr(9)+$serialtime Else ? 'seventeen' +Chr(9)+@ERROR+Chr(9)+$serialtime $serialtime='-1' Exit 87 EndIf EndIf EndFunction code: @error output: one 0 sixteen 0 17:00 four 0 four 0 four 0 four 0 four 0 four 0 four 0 five 0 six 0 eight 0 nine 0 fourteen 0 two 0 test server1 TODAY 17:00 ONCE notepad sixteen 0 17:30 four 0 four 0 four 0 four 0 four 0 four 0 four 0 five 0 six 0 eight 0 nine 0 fourteen 0 two 0 test server2 TODAY 17:30 ONCE notepad
_________________________
Co
Top
#46776 - 2003-10-20 02:06 PM
Re: How to use Scheduletask () for multiple tasks/servers?
Co
MM club member
Registered: 2000-11-20
Posts: 1341
Loc: NL
Top
#46784 - 2003-10-21 04:18 PM
Re: How to use Scheduletask () for multiple tasks/servers?
Co
MM club member
Registered: 2000-11-20
Posts: 1341
Loc: NL
Thanks! I have used it all! I think I have to say this is Sealeopard's script and a bit of mine. (Or can I use more of his UDF's in one script.. ); variabelen voor Scheduletask function
$name ='test'
$date ='TODAY'
$type ='ONCE'
$cmd ='notepad'
; variabelen voor Serialtime function
$timediff ='00:30'
$time ='16:30'
;Call @Scriptdir+'\netview2.udf'
$computers =netview2 (Domain )
For Each $computer In $computers
;Call @Scriptdir+'\osid.udf'
$os = osid ($computer )
If $os [1 ]='Win2K' and $os [2 ]< >'Workstation' and InStr ($computer ,"server" )< >0
;Call @Scriptdir +'\serialtime.udf'
; $time =serialtime (serialtime ($time )+ serialtime ($timediff ))
;Call @Scriptdir +'\scheduletask.udf'
; $rc =scheduletask ($name , $computer , $date , $time , $type , $cmd )
? 'gevonden' + $computer
EndIf
Next
:END
Sleep 30
Exit
;FUNCTION ScheduleTask
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;KIXTART BBS http://www.kixtart.org/board/ultimatebb.php?ubb=get_topic;f=12;t=000060
;
Function scheduletask ($name , $comp , $date , $time , $type , $cmd , optional $prms , optional $user , optional $pw , optional $comment , optional $typeargs , optional $jt )
Dim $jtexe [5 ], $shellcmd , $path
$jtpathL ='c:\scripts\tools'
$jtpathS ='\\server1\scripts\tools'
If $name ='' OR $comp ='' OR $date ='' OR $time ='' OR $type ='' OR $cmd =''
? 'three' +Chr (9 )+@ERROR
Exit 87
EndIf
; create an array of potential filepaths to jt.exe
$jtexe [0 ]=$jt
$jtexe [1 ]=$jtpathL +'\jt.exe'
$jtexe [2 ]=@SCRIPTDIR +'\jt.exe'
$jtexe [3 ]=@CURDIR +'\jt.exe'
$jtexe [4 ]=@STARTDIR +'\jt.exe'
$jtexe [5 ]=$jtpathS +'\jt.exe'
$path =Split ('%PATH%' ,';' )
For Each $jt In $path
ReDim preserve $jtexe [Ubound ($jtexe )+1 ]
$jtexe [Ubound ($jtexe )]=Join (Split ($jt +'\jt.exe' ,'\\' ),'\' )
? 'four' +Chr (9 )+@ERROR
Next
? 'five' +Chr (9 )+@ERROR
; check each filepath for the presence of jt.exe
For Each $jt In $jtexe
If Exist ($jt ) AND NOT (GetFileAttr ($jt ) & 16 ) AND Ubound ($jtexe )+1
$jtexe =$jt
? 'six' +Chr (9 )+@ERROR
EndIf
Next
Select
Case Ubound ($jtexe )+1
Exit 2
Case NOT Exist ($jtexe )
Exit 2
? 'seven' +Chr (9 )+@ERROR
EndSelect
If Left ($comp ,2 )< >'\\'
$comp ='\\' +$comp
? 'eight' +Chr (9 )+@ERROR
EndIf
If Right ($name ,4 )< >'.job'
$name =$name +'.job'
? 'nine' +Chr (9 )+@ERROR
EndIf
; delete a potentially existing task
$shellcmd = $jtexe
If $user AND $pw
$shellcmd = $shellcmd + ' /SC "' +$user +'" "' +$pw +'"'
? 'ten' +Chr (9 )+@ERROR
EndIf
$shellcmd = $shellcmd + ' /SM ' +$comp
$shellcmd = $shellcmd + ' /SD "' +$name +'"'
Shell '%COMSPEC% /e:1024 /c ' +$shellcmd +' >NUL 2>NUL'
$shellcmd = $jtexe
If $user AND $pw
? 'eleven' +Chr (9 )+@ERROR
$shellcmd = $shellcmd + ' /SC "' +$user +'" "' +$pw +'"'
EndIf
$shellcmd = $shellcmd + ' /SM ' +$comp
$shellcmd = $shellcmd + ' /SJ ApplicationName="' +$cmd +'"'
If $prms
$shellcmd = $shellcmd + ' Parameters="' +$prms +'"'
? 'twelve' +Chr (9 )+@ERROR
EndIf
$shellcmd = $shellcmd + ' WorkingDirectory="%SYSTEMROOT%"'
$shellcmd = $shellcmd + ' Comment="' +$comment +'"'
$shellcmd = $shellcmd + ' Creator="' +@userid +'"'
$shellcmd = $shellcmd + ' Priority=Normal'
$shellcmd = $shellcmd + ' MaxRunTime=3600000'
$shellcmd = $shellcmd + ' DontStartIfOnBatteries=0'
$shellcmd = $shellcmd + ' KillIfGoingOnBatteries=0'
$shellcmd = $shellcmd + ' RunOnlyIfLoggedOn=0'
$shellcmd = $shellcmd + ' SystemRequired=0'
$shellcmd = $shellcmd + ' DeleteWhenDone=1'
$shellcmd = $shellcmd + ' Suspend=0'
$shellcmd = $shellcmd + ' StartOnlyIfIdle=0'
$shellcmd = $shellcmd + ' KillOnIdleEnd=0'
$shellcmd = $shellcmd + ' RestartOnIdleResume=0'
$shellcmd = $shellcmd + ' Hidden=0'
$shellcmd = $shellcmd + ' TaskFlags=0'
$shellcmd = $shellcmd + ' /CTJ StartDate=' +$date
$shellcmd = $shellcmd + ' StartTime=' +$time
$shellcmd = $shellcmd + ' HasEndDate=0'
$shellcmd = $shellcmd + ' KillAtDuration=0'
$shellcmd = $shellcmd + ' Disabled=0'
$shellcmd = $shellcmd + ' Type=' +$type
If $typeargs
$shellcmd = $shellcmd + ' TypeArguments=' +$typeargs
? 'thirteen' +Chr (9 )+@ERROR
EndIf
$shellcmd = $shellcmd + ' /SAJ "' +$name +'"'
Shell '%COMSPEC% /e:1024 /c ' +$shellcmd +' >NUL 2>NUL'
$scheduletask =@ERROR
? 'fourteen' +Chr (9 )+@ERROR
Exit @ERROR
EndFunction
;FUNCTION SerialTime
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;
;SYNTAX SERIALTIME(STRTIME)
;
;EXAMPLE $rc=SERIALTIME('02:20:33.187')
;
;KIXTART BBS http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=12&t=000039
;
Function serialtime ($strtime )
Dim $hours , $minutes
If InStr ($strtime ,':' )
$strtime =Split ($strtime ,':' )
Select
Case Ubound ($strtime )<1
ReDim preserve $strtime [1 ]
Case Ubound ($strtime )>1
$serialtime =-1
Exit 87
EndSelect
$hours =Val ($strtime [0 ])
If $hours <0 OR $hours >23
$serialtime =-1
Exit 87
EndIf
$minutes =Val ($strtime [1 ])
If $minutes <0 OR $minutes >59
? 'fifteen' +Chr (9 )+@ERROR +Chr (9 )+$serialtime
$serialtime =-1
Exit 87
EndIf
$serialtime =0.0 +($hours *3600 )+($minutes *60 )
Else
$strtime =Val (CDbl ($strtime )*1000 )
If $strtime < =86400000 AND $strtime >=0
$hours =$strtime /3600 /1000
$strtime =$strtime -($hours *3600 *1000 )
$hours =Right ('00' +$hours ,2 )
$minutes =$strtime /60 /1000
$strtime =$strtime -($minutes *60 *1000 )
$minutes =Right ('00' +$minutes ,2 )
$serialtime =$hours +':' +$minutes
? 'sixteen' +Chr (9 )+@ERROR +Chr (9 )+$serialtime
Else
? 'seventeen' +Chr (9 )+@ERROR +Chr (9 )+$serialtime
$serialtime ='-1'
Exit 87
EndIf
EndIf
EndFunction
;FUNCTION OSID
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;
;EXAMPLE $currentos = osid()
; $installdate = CTime($currentos[9])
;
;KIXTART BBS http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=12&t=000019
;
Function osid (optional $sComp )
Dim $osidarray [11 ]
Dim $iINWIN , $sDOS , $iBUILD , $sCSD , $iPRODUCTSUITE , $sPRODUCTTYPE
Dim $operating_system , $sp_level , $os_suite , $os_short , $productsuite
Dim $os_type , $os_role , $os_flavor , $os_subver , $regkey
Dim $os_build , $os_proc , $os_owner , $os_org , $os_key , $os_date , $os_oem
Dim $os_lang
$sComp =Trim ($sComp )
Select
Case $sComp =@WKSTA
$sComp =''
Case $sComp AND NOT KeyExist ('\\' +$sComp +'\HKLM' )
Exit 2
Case $sComp
$sComp ='\\' +$sComp +'\'
EndSelect
; fetch all macro info depending on whether it's remote or local
If $sComp
If KeyExist ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' )
$iINWIN =1
$sDOS =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'CurrentVersion' )
$iBUILD =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'CurrentBuildNumber' )
$sCSD =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'CSDVersion' )
If $sDOS ='4.0' AND ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009' ,'Installed' )
$sCSD =$sCSD +'a'
EndIf
$sPRODUCTTYPE =ReadValue ($sComp +'HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions' ,'ProductType' )
Select
Case $sPRODUCTTYPE ='WinNT'
If $sDOS ='4.0'
$sPRODUCTTYPE ='Workstation'
Else
$sPRODUCTTYPE ='Professional'
EndIf
Case $sPRODUCTTYPE ='ServerNT'
If $sDOS ='5.2'
$sPRODUCTTYPE =''
Else
$sPRODUCTTYPE ='Server'
EndIf
Case $sPRODUCTTYPE ='LANManNT'
$sPRODUCTTYPE ='Domain Controller'
Case 1
$sPRODUCTTYPE ='Home Edition'
EndSelect
$sPRODUCTTYPE =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'ProductName' )+' ' +$sPRODUCTTYPE
$sPRODUCTTYPE =Join (Split ($sPRODUCTTYPE ,'Microsoft' ),'' )
$iPRODUCTSUITE =''
$os_lang =$sComp +Join (Split (ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'SystemRoot' ),':\' ),'$\' )+'\system32\shell32.dll'
$os_lang =GetFileVersion ($os_lang ,'Language' )
Else
$iINWIN =2
$dDOS =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion' ,'VersionNumber' )
$dDOS =Split ($dDOS ,'.' )
$iBUILD =$dDOS [Ubound ($dDOS )]
ReDim preserve $dDOS [1 ]
$sDOS =Join ($dDOS ,'.' )
$sCSD =''
$iPRODUCTSUITE =''
$sPRODUCTTYPE =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion' ,'Version' )
$os_lang =Right ('' +ReadValue ($sComp +'HKLM\SYSTEM\CurrentControlSet\Control\Nls\Locale' ,'' ),4 )
EndIf
Else
$iINWIN =@INWIN
$sDOS =@DOS
$iBUILD =@BUILD
$sCSD =@CSD
$iPRODUCTSUITE =@PRODUCTSUITE
$sPRODUCTTYPE =@PRODUCTTYPE
$os_lang =@SYSLANG
EndIf
; set the correct registry key
If $iINWIN =1
$regkey ='HKLM\Software\Microsoft\Windows NT\CurrentVersion'
Else
$regkey ='HKLM\Software\Microsoft\Windows\CurrentVersion'
EndIf
If $sComp
$regkey =$sComp +$regkey
EndIf
; retrieve registered owner, organization, build, type
$os_owner =ReadValue ($regkey ,'RegisteredOwner' )
$os_org =ReadValue ($regkey ,'RegisteredOrganization' )
$os_proc =ReadValue ($regkey ,'CurrentType' )
$os_build =Val ($iBUILD )
Select
Case $iINWIN =1
; determine the operating system kernel
Select
Case $sDOS ='6.0'
$operating_system ='Windows Longhorn'
Select
Case $os_build =4015
$operating_system =$operating_system +' (Alpha Preview 3)'
Case $os_build =4008
$operating_system =$operating_system +' (Alpha Preview 2)'
Case 1
$operating_system =$operating_system +' (Alpha/Beta/RC)'
EndSelect
$os_short ='WinLonghorn'
$os_key =ReadValue ($regkey ,'ProductID' )
Case $sDOS ='5.2'
$operating_system ='Windows Server 2003'
$os_short ='Win2K3'
$os_key =ReadValue ($regkey ,'ProductID' )
Select
Case $os_build =3714
$operating_system =$operating_system +' (RC1)'
Case $os_build <3790
$operating_system =$operating_system +' (Alpha/Beta/RC)'
EndSelect
Case $sDOS ='5.1'
$operating_system ='Windows XP'
Select
Case $os_build =2250
$operating_system =$operating_system +' (Alpha)'
Case $os_build =2257
$operating_system =$operating_system +' (Alpha)'
Case $os_build =2410
$operating_system =$operating_system +' (Beta 1)'
Case $os_build =2416
$operating_system =$operating_system +' (Beta 1)'
Case $os_build =2462
$operating_system =$operating_system +' (Beta 2)'
Case $os_build =2465
$operating_system =$operating_system +' (Beta 2)'
Case $os_build =2496
$operating_system =$operating_system +' (RC1)'
Case $os_build =2505
$operating_system =$operating_system +' (RC1)'
Case $os_build =2526
$operating_system =$operating_system +' (RC2)'
Case $os_build =2542
$operating_system =$operating_system +' (RC3)'
EndSelect
$os_short ='WinXP'
$os_key =ReadValue ($regkey ,'ProductID' )
Case $sDOS ='5.0'
$operating_system ='Windows 2000'
Select
Case $os_build =1515
$operating_system =$operating_system +' (Beta 2)'
Case $os_build =2031
$operating_system =$operating_system +' (Beta 3)'
Case $os_build =2128
$operating_system =$operating_system +' (Beta 3 RC2)'
Case $os_build =2183
$operating_system =$operating_system +' (Beta 3)'
EndSelect
$os_short ='Win2k'
$os_key =ReadValue ($regkey ,'ProductID' )
Case $sDOS ='4.0'
$operating_system ='Windows NT 4.0'
$os_short ='WinNT'
$os_key =ReadValue ($regkey ,'ProductID' )
$os_key =Left ($os_key ,5 )+'-' +SubStr ($os_key ,6 ,3 )+'-' +SubStr ($os_key ,10 ,7 )+'-' +Right ($os_key ,5 )
Case 1
$operating_system ='unknown'
$os_short ='unknown'
EndSelect
; determine the service pack level
$sp_level =$sCSD
If InStr ($sp_level ,'Service Pack' )
$sp_level =Split ($sp_level ,'Service Pack' )
$sp_level =Trim ($sp_level [Ubound ($sp_level )])
Else
$sp_level =0
EndIf
; determine the product suite
$productsuite =Val ($iPRODUCTSUITE )
$os_suite =''
If $productsuite
If $productsuite & 1
$os_suite =$os_suite +'Small Business |'
EndIf
If $productsuite & 2
$os_suite =$os_suite +'Enterprise |'
EndIf
If $productsuite & 4
$os_suite =$os_suite +'BackOffice |'
EndIf
If $productsuite & 8
$os_suite =$os_suite +'Communication Server |'
EndIf
If $productsuite & 16
$os_suite =$os_suite +'Terminal Server |'
EndIf
If $productsuite & 32
$os_suite =$os_suite +'Small Business (Restricted) |'
EndIf
If $productsuite & 64
$os_suite =$os_suite +'Embedded NT |'
EndIf
If $productsuite & 128
$os_suite =$os_suite +'DataCenter |'
EndIf
If $productsuite & 256
$os_suite =$os_suite +'Single User Terminal Server |'
EndIf
If $productsuite & 512
$os_suite =$os_suite +'Home Edition |'
EndIf
If $productsuite & 1024
$os_suite =$os_suite +'Blade Server |'
EndIf
If InStr ($os_suite ,'|' )
$os_suite =Left ($os_suite ,Len ($os_suite )-2 )
EndIf
EndIf
; determine the producy type
$os_type =$sPRODUCTTYPE
Select
Case InStr ($os_type ,'Domain Controller' )
$os_role ='Domain Controller'
$os_flavor ='Server'
Case InStr ($os_type ,'Server' )
$os_role ='Member Server'
$os_flavor ='Server'
Case InStr ($os_type ,'Workstation' )
$os_role ='Workstation'
$os_flavor ='Workstation'
Case InStr ($os_type ,'Professional' )
$os_role ='Workstation'
$os_flavor ='Workstation'
Case InStr ($os_type ,'Tablet PC' )
$os_role ='Workstation'
$os_flavor ='Tablet PC'
Case InStr ($os_type ,'Home Edition' )
$os_role ='Workstation'
$os_flavor ='Workstation'
Case 1
$os_role ='unknown'
$os_flavor ='unknown'
EndSelect
$operating_system =$operating_system +' ' +$os_flavor +' Service Pack ' +$sp_level
If $os_suite < >''
$operating_system =$operating_system +' [' +$os_suite +']'
EndIf
; determine the installation date
$os_date =ReadValue ('HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'Installdate' )
; determine the OEM Duplicator String
$os_oem =ReadValue ('HKLM\System\Setup' ,'OemDuplicatorString' )
Case $iINWIN =2
$os_short ='Win9x'
$os_role ='Workstation'
$sp_level =0
$os_subver =Lcase (ReadValue ($regkey ,'SubVersionNumber' ))
Select
Case $sDOS ='4.90'
$operating_system ='Windows ME'
$os_key =ReadValue ($regkey ,'ProductKey' )
$os_flavor =''
Case $sDOS ='4.10'
$operating_system ='Windows 98'
$os_key =ReadValue ($regkey ,'ProductKey' )
Select
Case InStr ($os_subver ,'c' )
$os_flavor ='SE'
Case InStr ($os_subver ,'b' )
$os_flavor ='B'
Case $os_subver =' a '
$os_flavor ='Second Edition'
Case 1
$os_flavor ='OEM'
EndSelect
Case $sDOS ='4.0'
$operating_system ='Windows 95'
$os_key =ReadValue ($regkey ,'ProductID' )
Select
Case InStr ($os_subver ,'c' )
$os_flavor ='OSR 2.5'
Case InStr ($os_subver ,'b' )
$os_flavor ='OSR 2.0'
Case InStr ($os_subver ,'a' )
$os_flavor =' Service Pack 1'
Case 1
$os_flavor =' OEM'
EndSelect
Case 1
$operating_system ='unknown'
$os_short ='unknown'
EndSelect
If $os_flavor
$operating_system =$operating_system +' ' +$os_flavor
EndIf
EndSelect
$osidarray [0 ]=$operating_system
$osidarray [1 ]=$os_short
$osidarray [2 ]=$os_role
$osidarray [3 ]=$sp_level
$osidarray [4 ]=$os_build
$osidarray [5 ]=$os_proc
$osidarray [6 ]=$os_owner
$osidarray [7 ]=$os_org
$osidarray [8 ]=$os_key
$osidarray [9 ]=$os_date
$osidarray [10 ]=$os_oem
$osidarray [11 ]=$os_lang
$osid =$osidarray
EndFunction
;FUNCTION NetView2()
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;
;CONTRIBUTOR Shawn Tassie
;
;SYNTAX NetView2([Domain,Comment])
;
;KIXTART BBS http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=12;t=000202
;
Function NetView2 (optional $domain , optional $commentflag )
Dim $array [255 ]
Dim $ReDim , $i , $j , $tempfile
Dim $filehandle , $retcode , $line
Dim $name , $comment
$ReDim = 255
$i = 0
$j = 0
$tempfile = '%temp%\netview.tmp'
If $domain
$domain = '/domain:' +Trim ($domain )
EndIf
If VarType ($commentflag )
$commentflag =Val ($commentflag )
Else
$commentflag =0
EndIf
If Exist ($tempfile )
Del $tempfile
EndIf
Shell '%comspec% /c net view ' +$domain +' >"' +$tempfile +'"'
If @error = 0
$filehandle =FreeFileHandle ()
$retcode =Open ($filehandle ,$tempfile )
For $j = 1 to 5
$line = ReadLine ($filehandle ) ; skip headings
Next
While @error = 0
$name = Trim (SubStr ($line ,3 ,InStr ($line ,' ' )-1 ))
$comment = Trim (Right ($line ,Len ($line )-InStr ($line ,' ' )))
If $commentflag
$array [$i ]=$name +',' +$comment
Else
$array [$i ]=$name
EndIf
$i =$i +1
If $i = $ReDim
$ReDim =$ReDim *2
ReDim preserve $array [$ReDim ]
EndIf
$line = ReadLine ($filehandle )
Loop
_________________________
Co
Top
#46787 - 2003-10-22 05:04 PM
Re: How to use Scheduletask () for multiple tasks/servers?
Co
MM club member
Registered: 2000-11-20
Posts: 1341
Loc: NL
I have modified it again... There are now 7 udf's included. Next time I only post my own part and udf's that i have modified. I didn't tested it so maybe it is full of error's...;===============================================================================================
;**** Created By Co ****
;**** Last Modified on 22-10-2003 at 16:59:56 by Co ****
;**** Not tested jet ****
;===============================================================================================
;
;Dependencies: UDF's:Scheduletask, Serialtime, netview2, DateMath, SerialDate, abs, ActiveService.
;
$log ='d:\log\schedule.txt'
; variables Scheduletask function
$name ='test'
$date =@DATE
$type ='ONCE'
$cmd ='notepad'
; variables Serialtime function
$timediff ='00:30'
$time ='16:30'
;Call @Scriptdir+'\netview2.udf'
$computers =netview2 (sasapp )
For Each $computer In $computers
;Call @Scriptdir+'\osid.udf'
$os = osid ($computer )
If $os [1 ]='Win2K' AND $os [2 ]< >'Workstation' AND InStr ($computer ,"sasn" )< >0
;Call @Scriptdir +'\serialtime.udf'
$time =serialtime (serialtime ($time )+ serialtime ($timediff ))
If $time ='00:00'
$date = DateMath ($date ,1 )
EndIf
If ACTIVESERVICE ("Task Scheduler" )< >1
GoTo log
EndIf
;Call @Scriptdir +'\scheduletask.udf'
$rc =scheduletask ($name , $comp , $date , $time , $type , $cmd )
; ? 'Found' + $computer
EndIf
Next
:log
If Open (1 ,$log ,5 ) = 0
WriteLine (1 ,"Task Scheduler Service isn't installed on" + $computer )
$nul =Close (1 )
Endif
:END
Exit
;FUNCTION ScheduleTask
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;KIXTART BBS http://www.kixtart.org/board/ultimatebb.php?ubb=get_topic;f=12;t=000060
;
Function scheduletask ($name , $comp , $date , $time , $type , $cmd , optional $prms , optional $user , optional $pw , optional $comment , optional $typeargs , optional $jt )
Dim $jtexe [5 ], $shellcmd , $path
$jtpathL ='c:\scripts\tools'
$jtpathS ='\\server1\scripts\tools'
If $name ='' OR $comp ='' OR $date ='' OR $time ='' OR $type ='' OR $cmd =''
? 'three' +Chr (9 )+@ERROR
Exit 87
EndIf
; create an array of potential filepaths to jt.exe
$jtexe [0 ]=$jt
$jtexe [1 ]=$jtpathL +'\jt.exe'
$jtexe [2 ]=@SCRIPTDIR +'\jt.exe'
$jtexe [3 ]=@CURDIR +'\jt.exe'
$jtexe [4 ]=@STARTDIR +'\jt.exe'
$jtexe [5 ]=$jtpathS +'\jt.exe'
$path =Split ('%PATH%' ,';' )
For Each $jt In $path
ReDim preserve $jtexe [Ubound ($jtexe )+1 ]
$jtexe [Ubound ($jtexe )]=Join (Split ($jt +'\jt.exe' ,'\\' ),'\' )
? 'four' +Chr (9 )+@ERROR
Next
? 'five' +Chr (9 )+@ERROR
; check each filepath for the presence of jt.exe
For Each $jt In $jtexe
If Exist ($jt ) AND NOT (GetFileAttr ($jt ) & 16 ) AND Ubound ($jtexe )+1
$jtexe =$jt
? 'six' +Chr (9 )+@ERROR
EndIf
Next
Select
Case Ubound ($jtexe )+1
Exit 2
Case NOT Exist ($jtexe )
Exit 2
? 'seven' +Chr (9 )+@ERROR
EndSelect
If Left ($comp ,2 )< >'\\'
$comp ='\\' +$comp
? 'eight' +Chr (9 )+@ERROR
EndIf
If Right ($name ,4 )< >'.job'
$name =$name +'.job'
? 'nine' +Chr (9 )+@ERROR
EndIf
; delete a potentially existing task
$shellcmd = $jtexe
If $user AND $pw
$shellcmd = $shellcmd + ' /SC "' +$user +'" "' +$pw +'"'
? 'ten' +Chr (9 )+@ERROR
EndIf
$shellcmd = $shellcmd + ' /SM ' +$comp
$shellcmd = $shellcmd + ' /SD "' +$name +'"'
Shell '%COMSPEC% /e:1024 /c ' +$shellcmd +' >NUL 2>NUL'
$shellcmd = $jtexe
If $user AND $pw
? 'eleven' +Chr (9 )+@ERROR
$shellcmd = $shellcmd + ' /SC "' +$user +'" "' +$pw +'"'
EndIf
$shellcmd = $shellcmd + ' /SM ' +$comp
$shellcmd = $shellcmd + ' /SJ ApplicationName="' +$cmd +'"'
If $prms
$shellcmd = $shellcmd + ' Parameters="' +$prms +'"'
? 'twelve' +Chr (9 )+@ERROR
EndIf
$shellcmd = $shellcmd + ' WorkingDirectory="%SYSTEMROOT%"'
$shellcmd = $shellcmd + ' Comment="' +$comment +'"'
$shellcmd = $shellcmd + ' Creator="' +@userid +'"'
$shellcmd = $shellcmd + ' Priority=Normal'
$shellcmd = $shellcmd + ' MaxRunTime=3600000'
$shellcmd = $shellcmd + ' DontStartIfOnBatteries=0'
$shellcmd = $shellcmd + ' KillIfGoingOnBatteries=0'
$shellcmd = $shellcmd + ' RunOnlyIfLoggedOn=0'
$shellcmd = $shellcmd + ' SystemRequired=0'
$shellcmd = $shellcmd + ' DeleteWhenDone=1'
$shellcmd = $shellcmd + ' Suspend=0'
$shellcmd = $shellcmd + ' StartOnlyIfIdle=0'
$shellcmd = $shellcmd + ' KillOnIdleEnd=0'
$shellcmd = $shellcmd + ' RestartOnIdleResume=0'
$shellcmd = $shellcmd + ' Hidden=0'
$shellcmd = $shellcmd + ' TaskFlags=0'
$shellcmd = $shellcmd + ' /CTJ StartDate=' +$date
$shellcmd = $shellcmd + ' StartTime=' +$time
$shellcmd = $shellcmd + ' HasEndDate=0'
$shellcmd = $shellcmd + ' KillAtDuration=0'
$shellcmd = $shellcmd + ' Disabled=0'
$shellcmd = $shellcmd + ' Type=' +$type
If $typeargs
$shellcmd = $shellcmd + ' TypeArguments=' +$typeargs
? 'thirteen' +Chr (9 )+@ERROR
EndIf
$shellcmd = $shellcmd + ' /SAJ "' +$name +'"'
Shell '%COMSPEC% /e:1024 /c ' +$shellcmd +' >NUL 2>NUL'
$scheduletask =@ERROR
? 'fourteen' +Chr (9 )+@ERROR
Exit @ERROR
EndFunction
;FUNCTION SerialTime
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;
;SYNTAX SERIALTIME(STRTIME)
;
;EXAMPLE $rc=SERIALTIME('02:20:33.187')
;
;KIXTART BBS http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=12&t=000039
;
Function serialtime ($strtime )
Dim $hours , $minutes
If InStr ($strtime ,':' )
$strtime =Split ($strtime ,':' )
Select
Case Ubound ($strtime )<1
ReDim preserve $strtime [1 ]
Case Ubound ($strtime )>1
$serialtime =-1
Exit 87
EndSelect
$hours =Val ($strtime [0 ])
If $hours <0 OR $hours >23
$serialtime =-1
Exit 87
EndIf
$minutes =Val ($strtime [1 ])
If $minutes <0 OR $minutes >59
? 'fifteen' +Chr (9 )+@ERROR +Chr (9 )+$serialtime
$serialtime =-1
Exit 87
EndIf
$serialtime =0.0 +($hours *3600 )+($minutes *60 )
Else
$strtime =Val (CDbl ($strtime )*1000 )
If $strtime < =86400000 AND $strtime >=0
$hours =$strtime /3600 /1000
$strtime =$strtime -($hours *3600 *1000 )
$hours =Right ('00' +$hours ,2 )
$minutes =$strtime /60 /1000
$strtime =$strtime -($minutes *60 *1000 )
$minutes =Right ('00' +$minutes ,2 )
$serialtime =$hours +':' +$minutes
? 'sixteen' +Chr (9 )+@ERROR +Chr (9 )+$serialtime
Else
? 'seventeen' +Chr (9 )+@ERROR +Chr (9 )+$serialtime
$serialtime ='-1'
Exit 87
EndIf
EndIf
EndFunction
;FUNCTION OSID
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;
;EXAMPLE $currentos = osid()
; $installdate = CTime($currentos[9])
;
;KIXTART BBS http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=12&t=000019
;
Function osid (optional $sComp )
Dim $osidarray [11 ]
Dim $iINWIN , $sDOS , $iBUILD , $sCSD , $iPRODUCTSUITE , $sPRODUCTTYPE
Dim $operating_system , $sp_level , $os_suite , $os_short , $productsuite
Dim $os_type , $os_role , $os_flavor , $os_subver , $regkey
Dim $os_build , $os_proc , $os_owner , $os_org , $os_key , $os_date , $os_oem
Dim $os_lang
$sComp =Trim ($sComp )
Select
Case $sComp =@WKSTA
$sComp =''
Case $sComp AND NOT KeyExist ('\\' +$sComp +'\HKLM' )
Exit 2
Case $sComp
$sComp ='\\' +$sComp +'\'
EndSelect
; fetch all macro info depending on whether it's remote or local
If $sComp
If KeyExist ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' )
$iINWIN =1
$sDOS =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'CurrentVersion' )
$iBUILD =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'CurrentBuildNumber' )
$sCSD =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'CSDVersion' )
If $sDOS ='4.0' AND ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009' ,'Installed' )
$sCSD =$sCSD +'a'
EndIf
$sPRODUCTTYPE =ReadValue ($sComp +'HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions' ,'ProductType' )
Select
Case $sPRODUCTTYPE ='WinNT'
If $sDOS ='4.0'
$sPRODUCTTYPE ='Workstation'
Else
$sPRODUCTTYPE ='Professional'
EndIf
Case $sPRODUCTTYPE ='ServerNT'
If $sDOS ='5.2'
$sPRODUCTTYPE =''
Else
$sPRODUCTTYPE ='Server'
EndIf
Case $sPRODUCTTYPE ='LANManNT'
$sPRODUCTTYPE ='Domain Controller'
Case 1
$sPRODUCTTYPE ='Home Edition'
EndSelect
$sPRODUCTTYPE =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'ProductName' )+' ' +$sPRODUCTTYPE
$sPRODUCTTYPE =Join (Split ($sPRODUCTTYPE ,'Microsoft' ),'' )
$iPRODUCTSUITE =''
$os_lang =$sComp +Join (Split (ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'SystemRoot' ),':\' ),'$\' )+'\system32\shell32.dll'
$os_lang =GetFileVersion ($os_lang ,'Language' )
Else
$iINWIN =2
$dDOS =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion' ,'VersionNumber' )
$dDOS =Split ($dDOS ,'.' )
$iBUILD =$dDOS [Ubound ($dDOS )]
ReDim preserve $dDOS [1 ]
$sDOS =Join ($dDOS ,'.' )
$sCSD =''
$iPRODUCTSUITE =''
$sPRODUCTTYPE =ReadValue ($sComp +'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion' ,'Version' )
$os_lang =Right ('' +ReadValue ($sComp +'HKLM\SYSTEM\CurrentControlSet\Control\Nls\Locale' ,'' ),4 )
EndIf
Else
$iINWIN =@INWIN
$sDOS =@DOS
$iBUILD =@BUILD
$sCSD =@CSD
$iPRODUCTSUITE =@PRODUCTSUITE
$sPRODUCTTYPE =@PRODUCTTYPE
$os_lang =@SYSLANG
EndIf
; set the correct registry key
If $iINWIN =1
$regkey ='HKLM\Software\Microsoft\Windows NT\CurrentVersion'
Else
$regkey ='HKLM\Software\Microsoft\Windows\CurrentVersion'
EndIf
If $sComp
$regkey =$sComp +$regkey
EndIf
; retrieve registered owner, organization, build, type
$os_owner =ReadValue ($regkey ,'RegisteredOwner' )
$os_org =ReadValue ($regkey ,'RegisteredOrganization' )
$os_proc =ReadValue ($regkey ,'CurrentType' )
$os_build =Val ($iBUILD )
Select
Case $iINWIN =1
; determine the operating system kernel
Select
Case $sDOS ='6.0'
$operating_system ='Windows Longhorn'
Select
Case $os_build =4015
$operating_system =$operating_system +' (Alpha Preview 3)'
Case $os_build =4008
$operating_system =$operating_system +' (Alpha Preview 2)'
Case 1
$operating_system =$operating_system +' (Alpha/Beta/RC)'
EndSelect
$os_short ='WinLonghorn'
$os_key =ReadValue ($regkey ,'ProductID' )
Case $sDOS ='5.2'
$operating_system ='Windows Server 2003'
$os_short ='Win2K3'
$os_key =ReadValue ($regkey ,'ProductID' )
Select
Case $os_build =3714
$operating_system =$operating_system +' (RC1)'
Case $os_build <3790
$operating_system =$operating_system +' (Alpha/Beta/RC)'
EndSelect
Case $sDOS ='5.1'
$operating_system ='Windows XP'
Select
Case $os_build =2250
$operating_system =$operating_system +' (Alpha)'
Case $os_build =2257
$operating_system =$operating_system +' (Alpha)'
Case $os_build =2410
$operating_system =$operating_system +' (Beta 1)'
Case $os_build =2416
$operating_system =$operating_system +' (Beta 1)'
Case $os_build =2462
$operating_system =$operating_system +' (Beta 2)'
Case $os_build =2465
$operating_system =$operating_system +' (Beta 2)'
Case $os_build =2496
$operating_system =$operating_system +' (RC1)'
Case $os_build =2505
$operating_system =$operating_system +' (RC1)'
Case $os_build =2526
$operating_system =$operating_system +' (RC2)'
Case $os_build =2542
$operating_system =$operating_system +' (RC3)'
EndSelect
$os_short ='WinXP'
$os_key =ReadValue ($regkey ,'ProductID' )
Case $sDOS ='5.0'
$operating_system ='Windows 2000'
Select
Case $os_build =1515
$operating_system =$operating_system +' (Beta 2)'
Case $os_build =2031
$operating_system =$operating_system +' (Beta 3)'
Case $os_build =2128
$operating_system =$operating_system +' (Beta 3 RC2)'
Case $os_build =2183
$operating_system =$operating_system +' (Beta 3)'
EndSelect
$os_short ='Win2k'
$os_key =ReadValue ($regkey ,'ProductID' )
Case $sDOS ='4.0'
$operating_system ='Windows NT 4.0'
$os_short ='WinNT'
$os_key =ReadValue ($regkey ,'ProductID' )
$os_key =Left ($os_key ,5 )+'-' +SubStr ($os_key ,6 ,3 )+'-' +SubStr ($os_key ,10 ,7 )+'-' +Right ($os_key ,5 )
Case 1
$operating_system ='unknown'
$os_short ='unknown'
EndSelect
; determine the service pack level
$sp_level =$sCSD
If InStr ($sp_level ,'Service Pack' )
$sp_level =Split ($sp_level ,'Service Pack' )
$sp_level =Trim ($sp_level [Ubound ($sp_level )])
Else
$sp_level =0
EndIf
; determine the product suite
$productsuite =Val ($iPRODUCTSUITE )
$os_suite =''
If $productsuite
If $productsuite & 1
$os_suite =$os_suite +'Small Business |'
EndIf
If $productsuite & 2
$os_suite =$os_suite +'Enterprise |'
EndIf
If $productsuite & 4
$os_suite =$os_suite +'BackOffice |'
EndIf
If $productsuite & 8
$os_suite =$os_suite +'Communication Server |'
EndIf
If $productsuite & 16
$os_suite =$os_suite +'Terminal Server |'
EndIf
If $productsuite & 32
$os_suite =$os_suite +'Small Business (Restricted) |'
EndIf
If $productsuite & 64
$os_suite =$os_suite +'Embedded NT |'
EndIf
If $productsuite & 128
$os_suite =$os_suite +'DataCenter |'
EndIf
If $productsuite & 256
$os_suite =$os_suite +'Single User Terminal Server |'
EndIf
If $productsuite & 512
$os_suite =$os_suite +'Home Edition |'
EndIf
If $productsuite & 1024
$os_suite =$os_suite +'Blade Server |'
EndIf
If InStr ($os_suite ,'|' )
$os_suite =Left ($os_suite ,Len ($os_suite )-2 )
EndIf
EndIf
; determine the producy type
$os_type =$sPRODUCTTYPE
Select
Case InStr ($os_type ,'Domain Controller' )
$os_role ='Domain Controller'
$os_flavor ='Server'
Case InStr ($os_type ,'Server' )
$os_role ='Member Server'
$os_flavor ='Server'
Case InStr ($os_type ,'Workstation' )
$os_role ='Workstation'
$os_flavor ='Workstation'
Case InStr ($os_type ,'Professional' )
$os_role ='Workstation'
$os_flavor ='Workstation'
Case InStr ($os_type ,'Tablet PC' )
$os_role ='Workstation'
$os_flavor ='Tablet PC'
Case InStr ($os_type ,'Home Edition' )
$os_role ='Workstation'
$os_flavor ='Workstation'
Case 1
$os_role ='unknown'
$os_flavor ='unknown'
EndSelect
$operating_system =$operating_system +' ' +$os_flavor +' Service Pack ' +$sp_level
If $os_suite < >''
$operating_system =$operating_system +' [' +$os_suite +']'
EndIf
; determine the installation date
$os_date =ReadValue ('HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' ,'Installdate' )
; determine the OEM Duplicator String
$os_oem =ReadValue ('HKLM\System\Setup' ,'OemDuplicatorString' )
Case $iINWIN =2
$os_short ='Win9x'
$os_role ='Workstation'
$sp_level =0
$os_subver =Lcase (ReadValue ($regkey ,'SubVersionNumber' ))
Select
Case $sDOS ='4.90'
$operating_system ='Windows ME'
$os_key =ReadValue ($regkey ,'ProductKey' )
$os_flavor =''
Case $sDOS ='4.10'
$operating_system ='Windows 98'
$os_key =ReadValue ($regkey ,'ProductKey' )
Select
Case InStr ($os_subver ,'c' )
$os_flavor ='SE'
Case InStr ($os_subver ,'b' )
$os_flavor ='B'
Case $os_subver =' a '
$os_flavor ='Second Edition'
Case 1
$os_flavor ='OEM'
EndSelect
Case $sDOS ='4.0'
$operating_system ='Windows 95'
$os_key =ReadValue ($regkey ,'ProductID' )
Select
Case InStr ($os_subver ,'c' )
$os_flavor ='OSR 2.5'
Case InStr ($os_subver ,'b' )
$os_flavor ='OSR 2.0'
Case InStr ($os_subver ,'a' )
$os_flavor =' Service Pack 1'
Case 1
$os_flavor =' OEM'
EndSelect
Case 1
$operating_system ='unknown'
$os_short ='unknown'
EndSelect
If $os_flavor
$operating_system =$operating_system +' ' +$os_flavor
EndIf
EndSelect
$osidarray [0 ]=$operating_system
$osidarray [1 ]=$os_short
$osidarray [2 ]=$os_role
$osidarray [3 ]=$sp_level
$osidarray [4 ]=$os_build
$osidarray [5 ]=$os_proc
$osidarray [6 ]=$os_owner
$osidarray [7 ]=$os_org
$osidarray [8 ]=$os_key
$osidarray [9 ]=$os_date
$osidarray [10 ]=$os_oem
$osidarray [11 ]=$os_lang
$osid =$osidarray
EndFunction
;FUNCTION NetView2()
;
;AUTHOR Jens Meyer (sealeopard@usa.net)
;
;CONTRIBUTOR Shawn Tassie
;
;SYNTAX NetView2([Domain,Comment])
;
;KIXTART BBS http://www.kixtart.org/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=12;t=000202
;
Function NetView2 (optional $domain , optional $commentflag )
Dim $array [255 ]
Dim $ReDim , $i , $j , $tempfile
Dim $filehandle , $retcode , $line
Dim $name , $comment
$ReDim = 255
$i = 0
$j = 0
$tempfile = '%temp%\netview.tmp'
If $domain
$domain = '/domain:' +Trim ($domain )
EndIf
If VarType ($commentflag )
$commentflag =Val ($commentflag )
Else
$commentflag =0
EndIf
If Exist ($tempfile )
Del $tempfile
EndIf
Shell '%comspec% /c net view ' +$domain +' >"' +$tempfile +'"'
If @error = 0
$filehandle =FreeFileHandle ()
$retcode =Open ($filehandle ,$tempfile )
For $j = 1 to 5
$line = ReadLine ($filehandle ) ; skip headings
Next
While @
_________________________
Co
Top
Moderator: Jochen , Allen , Radimus , Glenn Barnas , ShaneEP , Ruud van Velsen , Arend_ , Mart
2 registered
(morganw , mole )
and 414 anonymous users online.