YAY!!! V.2 is finished! haha \:\) I am a Tad Pumped about it. Looks cleaner, and Seemingly runs smoother.

I only 2 options disabled at the moment.
Auto Rebooting:
 Code:
If Exist ($RS_Logs + "\" + $Computer + ".SentEmail.txt")
    @CRLF + $Computer + " Is being rebooted.." + @CRLF
    ;Shutdown ($computer, "Please Save Your Work,  This System Is Being Rebooted in 1 min.",60,1,1)
Else


This Section Below Sends a Net Send Message to the Machine when a users isn't logged in, so the next time they log in they will get a Net Send message telling them to reboot.

 Code:
If checkusers($_User,$_Userstoskip) = -1		; Makes sure certian users don't get emails.
	Shell $_Email
Else
	; ***** Shell '%compsec% net send \\$_System "Alert Notice: This system has been turned on for $systemup days please reboot!, Thanks IT"'
Endif


To Get both of these options working you need to UnComment them.

Well with no Further Adue Here is V.2 \:\)

 Code:
; ===========================================================================================
;
;	Title:   Windows XP Reboot of network clients
;	Author:  Indigo			
;	Description:  Sends out emails at 7 Days, and Reboots at 10	
;	Version: .2
;
; ===========================================================================================

; == Seting Kixtart Options == 

$Rc = SetOption('Explicit', 'Off')
$Rc = SetOption('NoVarsInStrings', 'On')
$Rc = SetOption('NoMacrosInStrings', 'On')
$Rc = SetOption('WrapAtEOL', 'On')

Break on

; == Declaring Variables. == 

Dim $DontReboot		; == Systems that won't be rebooted
Dim $UserstoSkip	; == Users that will be skipped
Dim $EmailServer	; == The Hostname of the Email Server
Dim $EmailSufix		; == The "company.com" in the Email addresses
Dim $RS_Logs		; == The Log Location \\server\share\path\
Dim $IT_Email		; == The Administrator Email
Dim $Rc			; == Return Code for Kixtart Options
Dim $Computers		; == An Array that holds all the Computers Comnetview gathers
Dim $Computer		; == Each Compuer in Computers
Dim $Online		; == Systems Online / Not Online
Dim $Winver		; == Windows Version
Dim $WMICheck		; == WmiCheck pass/fail
Dim $Uptime		; == Uptime in Days IE. 10
Dim $Kixlib		; == Kix Library location

; == Kixlib Defined ==
$Kixlib = "\\Server\Share\Path"						; Define Where your Kixtart Lib is here Do not place a trailing \
; === Includes all Udfs needed for this script ===

 Call $Kixlib + "\Comnetview.udf"
 Call $Kixlib + "\WmiUptime.udf"
 Call $Kixlib + "\Translatename.udf"
 Call $Kixlib + "\Ping.udf"
 Call $Kixlib + "\FnWMIloggedin.udf"
 Call $Kixlib + "\WMIConfirm.udf"

; == Intializing  Computer & User Special Consideration Veriables ==  ***** Variables below must be changed to needed Values ******

$DontReboot  = "Computer Name Here" , "Computer Name Here"		; Computers to Be Skipped
$Userstoskip = "User Name Here","User Name Here"			; Users to be Skipped
$EmailServer = "Email Server Host Name" 				; HostName of Email Server
$EmailSufix  = "Email Suffix"						; Sufix of Email Address Company.com

$RS_Logs = "\\server\share\path" 					; Don't use the trailing \ because it won't work right
$IT_Email = "Admin@company.com"       					; Email Address of System Admin or Group

; == Clears Log Files If Script has been run before == 		       **********************************************************

del $RS_Logs + "\Systems_UpTime.txt"							
del $RS_Logs + "\Systems_Offline.txt"		

$computers = COMNetView()						; == Locates computers on the network 
CLS
For Each $computer in $computers											
	
	$online = Ping($computer,0,0,1)	; == Ping confirms computer online
	If $online = "1"														
		$winver = ReadValue("\\" + $computer + "\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion","ProductName")
		If $winver = "Microsoft Windows XP" 								
			$WMICheck = WMIConfirm($computer)
				If $WMICheck <> 0										
					$UpTime = WMIuptime($computer)
					$Userloggedin = GetloginName($Computer)	
					
					; == Displays Current System Information
					CLS
					"System: " + $Computer +" (Online)" + @CRLF
					"OS: (" $Winver ")" + @CRLF
					"User: " + $Userloggedin + @CRLF
					"Uptime: " + $Uptime[0] + " Days" + @CRLF
					; --------------------------------------					
					
					If len(ltrim($Uptime[0])) <> 0					; == Checks digit value of Uptime to see if it is 0 

or not
						If Systemcheck($Computer,$DontReboot) = -1		; == Checks to make sure system isn't in the 

Protected list
							
							If $Uptime[0] >= 7
								If RedirectOutput ($RS_Logs + "\Systems_UpTime.txt") = 0 
									$Userloggedin = GetloginName($computer)	
									? $computer + "'s Uptime is: " + $Uptime[0] + " Days.  " + $Userloggedin ?
									$ = RedirectOutput("")
								EndIf 
							EndIf;
					
							Select
								Case $Uptime[0] >= 0 and $Uptime[0] < 7								

			
							
									If Exist ($RS_Logs + "\" + $computer + ".SentEmail.txt")
										"Email Tag File found Deleting .... < 7 " + @CRLF
										del $RS_Logs + "\"+ $computer + ".SentEmail.txt"
									Endif
									@CRLF
									
								Case $Uptime[0] >= 7 and $UpTime[0] < 10
									
									"System is being processed." + @CRLF
									WriteEmail($computer,$Uptime[0],$RS_Logs)
									

SendEmail($Userloggedin,$Computer,$Uptime[0],$EmailServer,$IT_Email,$EmailSufix,$RS_Logs,$Userstoskip,0)
									"Writing Log File, and Sending Email >= 7 And < 10 " + @CRLF
									
								Case $Uptime[0] >= 10 										
									
									If Exist ($RS_Logs + "\" + $Computer + ".SentEmail.txt")
										@CRLF + $Computer + " Is being rebooted.." + @CRLF
										;Shutdown ($computer, "Please Save Your Work,  This System Is Being Rebooted 

in 1 min.",60,1,1)
									Else
										"Writing Log File, and Sending Email >= 10 " + @CRLF
										WriteEmail($computer,$Uptime[0],$RS_Logs)
										

SendEmail($Userloggedin,$Computer,$Uptime[0],$EmailServer,$IT_Email,$EmailSufix,$RS_Logs,$Userstoskip,0)
									Endif
							
							Endselect
						Else
							@CRLF + "System Is In The Protected List..(Skipping)" + @CRLF
						EndIf
					Else
					@CRLF +  "Uptime Check Failed!!! (Skipping & Logging)" + @CRLF + "Logfile: " + $RS_Logs + 

"\System_UptimeChck_Failed.txt" + @CRLF
						If RedirectOutput ($RS_Logs + "\System_UptimeChck_Failed.txt") = 0 
							"Uptime on: " + $computer + " Failed!!" + @CRLF
							$ = RedirectOutput("")
						EndIf
					EndIf
				Else
					$computer + " was skipped & Logged for review. WmiReturn Code: " + $WMICheck + @CRLF
					If RedirectOutput ($RS_Logs + "\Errorlog.txt") = 0 
						$computer + "'s Error Code is " + @error + " - " + @SERROR + @CRLF
						"This system was skipped & Logged for review. WmiReturn Code: " + $WMICheck + @CRLF
						$ = RedirectOutput("")
					EndIf 
				Endif
		EndIf
	Else
		If RedirectOutput ($RS_Logs + "\Systems_Offline.txt") = 0 
			$computer ?
			$ = RedirectOutput("")
		EndIf
	Endif
Next
; ----- System Reboot Email with attached System Uptimes Log -----
	
	SendEmail($Userloggedin,$Computer,$Uptime[0],$EmailServer,$IT_Email,$EmailSufix,$RS_Logs,$Userstoskip,1)

; ================== Functions Below This Point ====================

;----- This function just checks to make sure we don't reboot a pc that needs to stay up. --
Function Systemcheck($_Chkcomputer,$_DontReboot)		

; == Declaring Variables
Dim $_Result		; Holds the Result of the calculation
Dim $_Chkcomputer	; Computer to be checked
Dim $_DontReboot 	; Global Variable Transfered to Function.

	$_Result = 0
	$_Chkcomputer = TRIM(LCASE($_Chkcomputer))					
	$_Result = Ascan($_DontReboot,$_Chkcomputer,0)				
	$Systemcheck = $_Result										

EndFunction

; ---- Removes invalid email users ----
Function checkusers($_Users,$_Userstoskip)		

; == Declaring Variables
Dim $_Result		; Holds the Result of the calculation
Dim $_Chkuser		; User to be checked
Dim $_Users		; User passed to function (raw)
Dim $_Userstoskip 	; Global Variable Transfered to Function.

	$_Result = 0
	$_Chkuser = TRIM(LCASE($_Users))					
	$_Result = Ascan($_Userstoskip,$_Users,0)				
	$Checkusers = $_Result										

EndFunction

;----- Pulls in the user that is logged into X machine  ----------------------------
Function GetloginName($_Chkcomputers)

; == Declaring Variables
Dim $_Usrloggedin	; User Logged into current system in current format Domain\Username
Dim $_Username		; Just username by itself

	$_Usrloggedin = fnWMILoggedin (1,$_Chkcomputers)			; == Current user logged in. Remove ' ' around $_Chkcomputers may be needed
	$_Usrname = substr ($_Usrloggedin,6)					; == Removes "Domain\" Domain.  May need to look into a different way to 

shorten

If len(ltrim($_Usrloggedin)) = 0	; == Checks for a 0 digit value assigned to user, if it did (User not logged) in is Returned.
	$_Unli = "(User Not Logged In)"
	$Getloginname = $_Unli
	Return
Endif

$Getloginname = $_Usrname

EndFunction


;----- Sends an email to the user whos system has been up for more than 7 days, and sends email to administrator.
Function SendEmail($_User,$_System,$_Systemup,$_EmailServer,$_IT_Email,$_EmailSufix,$_RS_Logs,$_Userstoskip,$_AdminEmail)
; == Declaring Variables
Dim $_User		; User to be emailed
Dim $_System		; Hostname of current system
Dim $_Systemup		; Uptime of Current system
Dim $_Unli		; Defined as (User Not Logged In) - Incase user isn't logged in
Dim $_EmailSufix 	; Global Variable Transfered to Function.
Dim $_IT_Email 		; Global Variable Transfered to Function.
Dim $_RS_log		; Global Variable Transfered to Function.
Dim $_Email		; Building Block Variable for Sending Emails.

			; Through a Variable for On/Off maybe setup a Debug Admin Feature, so only admin is emailed

$_Email = 'bmail'
$_Email = $_Email + ' -s '
$_Email = $_Email + $_EmailServer
$_Email = $_Email + ' -f ' + $_IT_Email	
	
	If $_AdminEmail = 1
		$_Email = $_Email + ' -t ' + $_IT_Email
		$_Email = $_Email + ' -a ' + '"Systems That need to be rebooted"'
		$_Email = $_Email + ' -m ' + $_RS_Logs + '\Systems_uptime.txt'
	Else
		$_Email = $_Email + ' -t ' + $_IT_Email		; Change this back t $_User so it sends the email to the user.
		$_Email = $_Email + ' -a ' + '"(System Reboot Needed!) Uptime: ' + $_Systemup + ' Days."'
		$_Email = $_Email + ' -m ' + $_RS_Logs + '\' + $_System + '.SentEmail.txt'
	EndIf

If checkusers($_User,$_Userstoskip) = -1		; Makes sure certian users don't get emails.
	Shell $_Email
Else
	;Shell '%compsec% net send \\$_System "Alert Notice: This system has been turned on for $systemup days please reboot!, Thanks IT"'
Endif

EndFunction


;----- Writes the email file that is included in the body of the email sent. ------------
Function WriteEmail($_Computer,$_Uptime,$_RS_Logs)

; == Declaring Variables
Dim $_Computer 		; Hostname of Current System
Dim $_Uptime		; Uptime of Current System
Dim $_RS_Logs		; Handles Log locations

	If RedirectOutput ($_RS_Logs + "\"+ $_Computer + ".SentEmail.txt",1) = 0  ; == Creates a Log File to indicate the sending of an email.
		@CRLF $_Computer + "'s Uptime is: " + $_Uptime + " Days."	
		@CRLF
		@CRLF "This is the Body of the Email that will be sent... Fill it in with whatever you want."
		@CRLF
		$ = RedirectOutput("")
	EndIf 

EndFunction