ilpostino Skrevet 26. juni 2007 Del Skrevet 26. juni 2007 (endret) noen som vet om det er mulig å slette inholdet i gitte lokale (temp)mapper gjennom OU eller tilsvarende feks hver uke? edit: spesifisert teksten noe. Endret 2. juli 2007 av ilpostino Lenke til kommentar
teledud Skrevet 1. juli 2007 Del Skrevet 1. juli 2007 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
Grim_Fandango Skrevet 2. juli 2007 Del Skrevet 2. juli 2007 (endret) 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 2. juli 2007 av Grim_Fandango Lenke til kommentar
ilpostino Skrevet 2. juli 2007 Forfatter Del Skrevet 2. juli 2007 det kan bli litt tungvindt å kjøre dette programmet på cirka 160 maskiner i et nettverk. det er derfor jeg er ute etter en sentralisert løsning. Lenke til kommentar
Grim_Fandango Skrevet 3. juli 2007 Del Skrevet 3. juli 2007 (endret) 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 3. juli 2007 av Grim_Fandango Lenke til kommentar
lohelle Skrevet 3. juli 2007 Del Skrevet 3. juli 2007 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
ilpostino Skrevet 9. juli 2007 Forfatter Del Skrevet 9. juli 2007 *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
Grim_Fandango Skrevet 11. juli 2007 Del Skrevet 11. juli 2007 *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
ilpostino Skrevet 16. juli 2007 Forfatter Del Skrevet 16. juli 2007 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
Grim_Fandango Skrevet 16. juli 2007 Del Skrevet 16. juli 2007 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
ilpostino Skrevet 16. juli 2007 Forfatter Del Skrevet 16. juli 2007 (endret) 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 16. juli 2007 av ilpostino Lenke til kommentar
ilpostino Skrevet 17. juli 2007 Forfatter Del Skrevet 17. juli 2007 (endret) 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 17. juli 2007 av ilpostino Lenke til kommentar
Grim_Fandango Skrevet 17. juli 2007 Del Skrevet 17. juli 2007 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå