Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Er også interessert i å vite hvordan man kan kjøre "diskopprydding" for alle brukere på en terminalserver.

Hvis man starter den på vanlig måte, virker det som den kun tar "opprydding" på den ene innloggede brukeren som starter "oppryddingen". (selv om man er administrator)

Lenke til kommentar

Kan ikke se at dette hører hjemme i en GPO, og tror heller ikke det er mulig.

 

Det jeg gjør er å bruke programmet DELEN (http://www.geocities.com/jadoxa/delenxrd/) som jeg har satt opp til å slette filer som er 1 uke gamle.

 

Dette programmet kjører jeg så via en batch fil som jeg kaller i en "scheduled task" en gang i uken.

 

Finnes sikkert haug og lass med andre program for dette, og du kan også programmere selv med vbs, men DELEN er enkelt og greit program som er kommando linje basert.

 

Grim

 

Ps. Jeg har ikke testet dette på en terminal server, men bruker det selv på en print server der jeg har installert noe spesial print software som lager masse vis med urelevant logg.

Endret av Grim_Fandango
Lenke til kommentar

Hei,

 

Hvis det er snakk om klient PC'er du skal kjøre opprydding på, så høres det jo mer ut som problemet ditt er hvordan du skal deploye en batchjob eller ett skript enn selve jobben.

 

Du kan jo eksekvere en batchfil eller ett VB script i en GPO under "login" (eller "startup") seksjonen.

 

Dette skriptet kan så kjøre ett oppryddingsprogram slik som f.eks DELEN med de ønskede parametre, eller du kan starte Windows XP sitt eget innebygde "Cleanmgr" med ønsket parameter (se: http://support.microsoft.com/kb/315246)

 

Problemet er uansett at om du starter det i ett slikt skript, så kjøres det kun under oppstart eller pålogging av PC. Dette kan være ett problem hvis du har mange brukere som aldri logger seg av PC'ene sine.

 

Da er det bedre å installere det som en scheduled task som jeg nevnte først. Men igjen kan du bruke "login" eller "startup" delen i en GPO for å autmatisere installeringen av selve oppryddingsjobben som en oppgave på klient PC'ene.

 

Du må da skrive ett skript sjekker om tjenesten "Task Scheduler" er på og hvis ikke aktiverer og starter denne. Deretter må du kopiere ønskede filer til klient PC'en og til slutt legge til en scheduled task. Alt dette bør kunne gjøres via WMI kall fra ett VB skript.

 

Her bør du finne litt om hvordan du kan bruke WMI til å modifisere tjenester:

http://msdn2.microsoft.com/en-us/library/aa394602.aspx

 

Og her er syntax og eksmpel på bruk av WMI for å installere en task:

http://msdn2.microsoft.com/en-us/library/aa394399.aspx

 

 

Istedenfor å bruke WIM, kan du også løse det med "SC", "Copy" og "AT" kommandoene i en batch fil som kan kjøres under "startup" eller "logon".

 

F.eks. kan du endre status på "Task Scheduler" (Schedule) tjenesten fra "disabled" til "Automatic" med:

sc config schedule start= auto

 

Du kan så starte "Task scheduler" tjenesten med:

net start schedule

 

Deretter:

kopier filer som skal brukes, dersom du ikke skal benytte cleanmgr eller andre program som allerede er innebygget i XP via vanlig "copy" kommando

 

Og bruk til slutt AT for å installere oppgaven

AT <parametre>

 

(det står litt mer om AT her: http://www.microsoft.com/technet/prodtechn.../c04w2kad.mspx)

 

PS. for å unngå at oppgaven installeres ved alle pålogginger/oppstarter bør du legge inn en sjekkrutine. F.eks. kan du skrive en tom tekstfil til f.eks c:\ og så bruke "if exist" kommandoen i starten til å sjekke om den eksisterer.

 

Mvh

Grim

Endret av Grim_Fandango
Lenke til kommentar

Litt utenom topic, men..

 

Jeg pleier å sette opp ny PC-er og terminalservere slik at alle tempmappene til brukerene ligger i en egen mappe. På denne måten så er det nok å slette denne spesifike mappen en gang i blant. Dette gjelder da særlig på terminalservere da.

 

Dette gjør det veldig lett å rydde opp. Mappen må dog slettes når ingen andre enn administrator (eller hva den heter hos deg) er pålogget. Det er lett å lage et script som gjør dette automatisk under oppstart av serveren.

Lenke til kommentar
*snip*

 

takker for raskt og utfyllende svar. da jeg leste det du skrev tenkte jeg på en ting. hvis jeg går for å starte scheduled task og starte sletting på et gitt tidspunkt så trenger du vel ikke kopiere over noen filer da det her er snakk om å starte en tjeneste som er innebygget i Windows? på meg virker dette som den beste løsningen så jeg tror jeg går for den...

Lenke til kommentar
*snip*

 

takker for raskt og utfyllende svar. da jeg leste det du skrev tenkte jeg på en ting. hvis jeg går for å starte scheduled task og starte sletting på et gitt tidspunkt så trenger du vel ikke kopiere over noen filer da det her er snakk om å starte en tjeneste som er innebygget i Windows? på meg virker dette som den beste løsningen så jeg tror jeg går for den...

9036507[/snapback]

 

Det jeg mente med kopiering av filer til klient PC'en, var at du kanskje trenger å lage en batch fil (f.eks "slettejobb.cmd") eller ett skript, som inneholder nødvendige kommandoer for å slette filer, og deretter lage en scheduled task som starter denne filen på ett gitt tidspunkt.

 

Dersom alle maskinene har kontakt med nettverket, kan du kanskje lage en scheduled task som peker til en slik batch/script fil som ligger på ett nettverksområde alle har lesetilgang til.

 

En slik batch fil kan være greit hvis du ønsker å bruke shell kommandoer slik som "del", "erase", "rmdir", etc, eller hvis du ønsker å kalle andre mer avanserte tredjeparts program slik som delen. Fordelen med disse er at du kan få dem til å kjøre helt uten at brukeren ser det ("silent").

 

Du kan selvfølgelig også kalle opp det innebygde "cleanmgr" programmet, men du må først lage en predefinert jobb med dette, deretter må du oppdatere registry på klient PC'ene med informasjon om denne predefinerte jobben (dette kan også automatiseres i GPO'en). Og til slutt så vil brukerne fortsatt få opp en dialogboks der de kan velge "cancel" når du kjører denne. (jeg tror iallefall ikke denne kan kjøres helt skjult).

 

Du kan kanskje lage en scheduled task som kaller opp "cmd.exe" med /C parametren og så angi en "del <sti>\*.* /F /S /Q" til å utføre. Da bør ikke en batch fil trenges, men skal du slette filer fra mange områder må du da lage mange tasker. Da er det bedre å samle alt i en batchfil og enten kopiere denne over til klient PC, eller kalle den opp fra nettverket (sistnevnte gjør det jo også enklere å vedlikeholde filen).

 

Grim

Lenke til kommentar

nå har jeg orndet meg et ganske nice script her og fått litt blod på tann. oppgavene som scriptet lager får navn At1, At2, Atx...

 

noen som vet hvordan jeg kan gi oppgavene andre navn? dette fordi jeg vil sjekke om disse finnes fra før av når scriptet kjøres...

 

scriptet ser slik ut så langt: (jeg regner med jeg kommer til å endre det noe før det er ferdig).

 

'Denne delen kopierer BAT-filen
Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\lexmark\slett_temp_mapper.bat" , "C:\", OverwriteExisting

'Denne delen legger inn en ny Planlagt oppgave som sletter temporære filer. dette skal skje hver onsdag klokken 0300
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
   & strComputer & "\root\cimv2")
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create _
   ("c:\slett_temp_mapper.bat", "********180000.000000-420", True , 4, , True, JobId) 
If errJobCreated <> 0 Then
Wscript.Echo "Error on task creation (Delete files)"
Else
Wscript.Echo "Task created (Delete files)"
End If

'Denne delen legger inn en ny Planlagt oppgave som defragmenterer hardiskene. Dette skal skje hver tirsdag klokken 0300
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
   & strComputer & "\root\cimv2")
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create _
   ("C:\Windows\system32\defrag.exe", "********180000.000000-420", True , 2, , True, JobId) 
If errJobCreated <> 0 Then
Wscript.Echo "Error on task creation (Defragmentation)"
Else
Wscript.Echo "Task created (Defragmentation)"
End If

Lenke til kommentar

Hei, ikke for å være selvmotsigende :!: (jeg har jo selv anbefalt WMI), men jeg ser at det kanskje kan bli problemer med å bruke WMI.

 

Noterer meg spesielt denne: http://www.microsoft.com/technet/scriptcen...04/hey0922.mspx

 

Så kanskje du må tenke litt anderleses igjen...

 

Vi har jo "SCHTASKS" kommandoen som kanskje kan brukes.

 

Kanskje er det bedre å kalle denne i en batch fil slik som i eksempelet mitt her:

copy c:\lexmark\slett_temp_mapper.bat c:\ /Y
copy c:\lexmark\defrag.bat c:\ /Y

SCHTASKS /Create /SC weekly /D THU /TN Slett_temp_mapper /ST 03:00:00 /TR c:\slett_temp_mapper.bat /RU "system"
SCHTASKS /Create /SC weekly /D WED /TN defrag /ST 03:00:00 /TR C:\defrag.bat /RU "system"

 

Merk at jeg kaller opp en egen batch fil som skal inneholde defrag kommandoen. Dette er fordi den trenger parametre (defrag c:\ for eksempel), og schtasks liker ikke hvis du legger inn parametre da den da blir forvirret med sine egne parametre.

 

Merk også at jeg i eksempelet har satt opp å kjøre med system kontoen ("NT AUTHORITY\system"). Du må selvfølgelig teste at de ønskede oppgavene kan kjøre med denne. Hvis ikke må du kanskje legge inn en bruker.

 

Merk tilslutt at jeg ikke gjør noen sjekk. Dette er ikke nødvendig for batchfilen går videre selv om den feiler på opprettelse av oppgaven (hvis den eksisterer fra før), og siden du kan gi unike navn er det liten sjans for at de eksisterer fra før (det avhenger kun av hvor unike navn du gir)

 

Dersom du av en eller annen grunn ønsker å bruke en vb script fil, kan du eventuelt bake "Schtask" kommandoen inn ved å kalle den opp som en shell kommando ved bruk av "wscript.exec" metoden, slik som dette:

 

Set WshShell = CreateObject("WScript.Shell")

Set objExec = WshShell.Exec("SCHTASKS /Create /SC weekly /D THU /TN Slett_temp_mapper /ST 03:00:00 /TR c:\slett_temp_mapper.bat /RU system")

 

 

Mvh

Grim

Lenke til kommentar

såvidt jeg kunne skjønne ut ifra den artikkelen skulle det gå fint å lage scheduled tasks men det vil bli problematisk å endre dem/gjøre noe med dem i ettertid...?

 

(det siste har jeg egentlig mer eller mindre skjønt allerede)

Endret av ilpostino
Lenke til kommentar

da kommer jeg med et nytt forslag. siden september ifjor har jeg laget en god dose BAT og vbs-script og det ante meg ikke at det fantes såpass mange innebygde programmer i Xp:

 

@echo off

::Dette sjekker om BAT-filen finnes på systemet eller ikke
IF NOT EXIST c:\slett_temp_mapper.bat goto copy
goto start_oppgave

:copy
copy c:\lexmark\slett_temp_mapper.bat c:\
goto start_oppgave

:start_oppgave
SCHTASKS /create /tn "Slett temp-filer" /tr c:\slett_temp_mapper.bat /sc UKENTLIG /d MA /st 03:00:00 /ru "System"
SCHTASKS /create /tn "Defragmenter maskinen" /tr C:\Windows\system32\defrag.exe /sc UKENTLIG /d ON /st 03:00:00 /ru "System"

Endret av ilpostino
Lenke til kommentar

Som nevnt kan du ikke starte defrag.exe uten å angi hvilken disk som skal defragmenteres. Du må skrive "defrag c:\" eller lignende. Og da kan du ikke kalle den opp med schtasks da den ikke vil forstå påfølgende parameter.

 

Så lag istedenfor en batcfil til som inneholder kommandoen "defrag c:\", og opprett deretter en task som starter denne batch filen.

 

Det er vel heller ikke strengt tatt nødvendig å sjekke for om batchfilene eksisterer eller ikke. Jeg mistenker at en filkopiering av noen få filer som hver er på noen få kb tar omtrent like lang tid som å sjekke om de eksisterer og starte en goto loop. Det vil gå så fort uansett hva du velger. Sløyfer du testen, så vet du at klientene alltid har de nyeste og oppdaterte batchfilene, og du kan oppdatere dem når du vil.

 

Grim

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...