Oops_my_bad Posted February 23, 2008 Posted February 23, 2008 We have a certain member of staff here who does not like not having admin rights to her school issued laptop. Of course this means we are forever getting complaints that she cant do this that or the other. Well, every request has been dealt with by way of permissions or minor GP changes as they were reasonable, but still no admin rights needed xD She has now asked if she can have rights to defrag her laptop. I mean wtf.. I didn't think NTFS defragged that badly anyway to have to perform routing defrags, but as it happens I can't seem to enable this feature. I've enabled the defrag MMC in GP but still the user does not have any rights. Whats the best way of going about this to allow a non-administrative user rights to defrag? Apart from telling her to sawd awf..?
Ric_ Posted February 23, 2008 Posted February 23, 2008 It doesn't exactly fix your problem but you could schedule the defrag for the teacher. 1
mattx Posted February 23, 2008 Posted February 23, 2008 You may be able to script it - use a RunAsSet in AutoIT which fires off the default defrag tool - or have you tried running it from a command line ? defrag c: -f
Oops_my_bad Posted February 23, 2008 Author Posted February 23, 2008 yeh, the scheduled task seems to be doing the trick as long as I run as, do you know how it handles the laptop not being on at the scheduled time?
adamf Posted February 23, 2008 Posted February 23, 2008 What you could do (depending on how much you trust the people in quesiton) is within the Local Group Policy of the machine assign them the right to 'perform volume maintainence tasks'. This will allow them to defrag a volume with out admin rights then you don't have to reply on schedules and whether the machine is on or not etc... - it does however allow others things, such as disk converstions. 1
Michael Posted February 24, 2008 Posted February 24, 2008 Does she even know what defragging is? I had another user recently who asked a similar question but I put them right and said it wasn't necessary. And secondly, if there was a serious Windows problem I could re-image in 10 minutes. Defragging can take much longer. I'd also allow Scandisk whilst you're at it, as sometimes Defrag won't run if the hard drive is more than 10% fragmented.
Osprey Posted February 24, 2008 Posted February 24, 2008 We copy the following vbs to c:\defrag and run task.vbs For domain workstations we use a startup script to see if it is there and if it isn't we copy it onto the workstations and run task.vbs defrag.vbs is scheduled to run on Wed at 12:30 'defrag.vbs 'Defrags all hard disks - Can be run as a Scheduled Task 'Modified to create an error log and display it '© Doug Knox - 4/13/2002 Option Explicit Dim WshShell, fso, d, dc, ErrStr(), Return, X, A(), MyFile, I, MyBox, Drive Set WshShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") X = 0 Set dc = fso.Drives For Each d in DC If d.DriveType = 2 Then X = X + 1 'Determine drive letter of first fixed disk 'This is the drive that the error report will be placed on If X = 1 Then Drive = d End If End If Next ReDim A(X) ReDim ErrStr(X) X = 0 For Each d in dc If d.DriveType = 2 Then X = X + 1 Return = WshShell.Run("defrag " & d & " -f", 1, TRUE) 'Determine the Error code returned by Defrag for the current drive and save it If return = 0 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag completed successfully" & vbCRLF elseif return = 1 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with error level " & return & " (defrag was cancelled manually) " & vbCRLF elseif return = 2 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with error level " & return & " (there was a command line error. Check your command line for valid switches and drives)" & vbCRLF elseif return = 3 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with error level " & return & " (there was an unknown error)" & vbCRLF elseif return = 4 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with error level " & return & " (defrag could not run due to insufficient memory resources)" & vbCRLF 'errorlevel 5 is not currently used elseif return = 5 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with error level " & return & " (general error)" & vbCRLF elseif return = 6 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with error level " & return & "(System error: either the account used to run defrag is not an administrator, there is a problem loading the resource DLL, or a defrag engine could not be accessed. Check for proper user permissions and run Sfc.exe to validate system files)" & vbCRLF elseif return = 7 then ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with error level " & return & " (There is not enough free space on the drive. Defrag needs 15% free space to run on a volume)" & vbCRLF else ErrStr(x) = ErrStr(x) & "Drive " & d & " Defrag aborted with an unknown error level: " & return & vbCRLF end if End If Next 'Create the Error Report in the root of the first fixed disk. Set MyFile = fso.OpenTextFile(Drive & "\defragreport.txt", 2, True) MyFile.WriteLine(Date) & vbCRLF MyFile.WriteLine(Time) & vbCRLF For I = 1 to X MyFile.WriteLine(ErrStr(I)) Next MyFile.Close Return = WshShell.Run(Drive & "\defragreport.txt",3,True) Set WshShell = Nothing Set fso = Nothing 'task.vbs strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objNewJob = objWMIService.Get("Win32_ScheduledJob") errJobCreated = objNewJob.Create _ ("c:\defrag\defrag.vbs", "********123000.000000-000", _ True , 4, , , JobID) Wscript.Echo errJobCreated
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now