Co
MM club member
Registered: 2000-11-20
Posts: 1342
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