• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 510
  • Last Modified:

Trying to find a solution to defrag all workstations on our domain on a schedule after hours

I have been trying to  many different vbscripts and.bat files that are set up to run a chkdsk and defrag all workstations on our domain. I have placed them in \\Domain\netlogon and created a group policy and then added the script to run on start up. I have been unable to get this to execute on any workstation.

I dont' have any problem placing a script on each workstation and running it through scheduled tasks. The problem that I run into there is that defrag will not run unless is an administrator account.

I'm looking for a solution to any of these problems and my last resort is to use a third party defrag application that would run without admin rights.
0
hcp27
Asked:
hcp27
  • 5
  • 3
1 Solution
 
johnb6767Commented:
Perform volume maintenance tasks
http://technet.microsoft.com/en-us/library/cc779312.aspx
Dont think this works on the CLI version of Defrag.exe, but the GUI should work...
0
 
hcp27Author Commented:
I added every user to be able to Perform volume maintenance tasks in the appropriate Group poicy object editor. I tried to run the script on a workstation without admin rights and it still says cannon start task.

I also tried to start defrag manually though system tools and it's still give me the You must have administrator privileges to defragment a volume.
0
 
Shift-3Commented:
Set the scheduled tasks to run under the user NT AUTHORITY\SYSTEM.  Leave the password blank.  They will then run with administrative rights.

You can script this change in a batch script like the one below.  It gets the target computer names from a file named computerlist.txt and the name of the scheduled task to edit is set with the /TN switch.


@echo off
 
for /F %%G in (computerlist.txt) do schtasks /change /S %%G /RU "NT AUTHORITY\SYSTEM" /TN "defragtask"

Open in new window

0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
hcp27Author Commented:
Here is the script i'm trying to run. How would you change this?
'Program: CheckAndDefrag.bat
'Author: Pat Lee
'Date: 6/12/2008
 
'Clear all scheduled tasks defined by this script
schtasks /delete /tn "DirtyBit Task" /f
schtasks /delete /tn "Restart Task" /f
schtasks /delete /tn "Defrag Task" /f
 
'Set scheduled tasks to set chkdsk, restart and defrag
schtasks /create /ru "SYSTEM" /sc WEEKLY /d SUN /TN "DirtyBit Task" /tr "c:\windows\system32\fsutil.exe dirty set c:" /st 00:45:00 /sd "01/01/2008"
schtasks /create /ru "SYSTEM" /sc WEEKLY /d SUN /TN "Restart Task" /tr "c:\windows\system32\shutdown.exe -r -t 60" /st 01:00:00 /sd "01/01/2008"
schtasks /create /ru "SYSTEM" /sc WEEKLY /d SUN /TN "Defrag Task" /tr "c:\windows\system32\defrag.exe c:" /st 02:00:00 /sd "01/01/2008"

Open in new window

0
 
hcp27Author Commented:

At this point I'm willing to just use this script that only executes Defrag.exe
set WshShell = CreateObject("WScript.Shell")
 
'Launch Defrag from the command line and wait for a second
WshShell.Run "dfrg.msc"
WScript.Sleep 1000
 
'Wait until the application has loaded - Check every second
While WshShell.AppActivate("Disk Defragmenter") = FALSE
     wscript.sleep 1000
Wend
 
'Bring the application to the foreground
WshShell.AppActivate "Disk Defragmenter"
WScript.Sleep 200
 
'Send an ALT-A key to bring down the degrag menu
WshShell.SendKeys "%A"
WScript.Sleep 200
 
'Send a D to start the defrag
WshShell.SendKeys "D"
 
'Wait until the defrag is completed - Check for window every 5 seconds
While WshShell.AppActivate("Defragmentation Complete") = FALSE
     wscript.sleep 5000
Wend
 
'Bring the msgbox to the foreground
WshShell.AppActivate "Defragmentation Complete"
WScript.Sleep 200
 
'Send a tab key to move the focus from View Report button to the Close Button
WshShell.Sendkeys "{TAB}"
Wscript.Sleep 500
 
'Send key to Close the Defragmentation Complete window
WshShell.Sendkeys "{ENTER}"
Wscript.Sleep 500
 
'Send and ALT-F4 to Close the Defrag program
WshShell.Sendkeys "%{F4}"

Open in new window

0
 
Shift-3Commented:
That first script looks fine to me.
0
 
hcp27Author Commented:
I set the run as NT AUTHORITY\SYSTEM and then logged into an account that doesnt have the admin rights. It I executed the script and it at least doesn't say that it couldnt start. Will this defrag utility pop up like defrag.exe and show the progress of the defragmentation? I know the restart works cause it will pop up saying that the system is being shutdown by NT AUTHORITY/SYSTEM.
0
 
Shift-3Commented:
No, the task will not run interactively.  You can see if it is running by checking the Processes tab in Task Manager or looking under the Status column in the Scheduled Tasks window.
0
 
hcp27Author Commented:
Thank you so much for your help. I have been trying to figure this out for a week now and I'm not to familiar with this. Really appreciate everything.

Thanks again
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now