Bruk PowerShell til å planlegge rutineoppgaver

Nylig, da jeg logget på datamaskinen min på kontoret, la jeg merke til at det var hauger med snarveier på skrivebordet og annet søppel jeg droppet på skrivebordet som jeg sannsynligvis ikke trengte å bruke igjen. Jeg bestemte meg for å bruke PowerShell for å se om jeg kunne finne en enkel måte å finne alle varene som ble lagt der for over 180 dager siden, og deretter bli kvitt dem.

Dette innlegget skisserer hvordan jeg brukte PowerShell til å lete etter gamle filer og planlegge en automatisert oppgave som kjøres hver dag for å slette dem. Dette eksemplet på en hverdagsoppgave illustrerer hvordan du kan tilpasse PowerShell-kommandoer for å øke effektiviteten.

Første ting først - se etter filer

Da jeg bestemte meg for å prøve denne biten av opprydding scripting, jeg først ønsket å vite om det var noen filer som ble skrevet lenger enn for 180 dager siden:

 Få-barn-sti "" | der {$ _. lastwritetime -lt (dato) .dag (180)} 
Merk: kan legges inn som c: \ brukere \ brukernavn \ desktop på Windows Vista og senere og C: \ dokumenter og innstillinger \ brukernavn \ desktop på Windows XP, eller du kan navigere PowerShell til banen med cd-brukere \ brukernavn \ desktop og la stien være utenfor kommandoen. Å kjøre denne kommandoen på systemet mitt ga resultatene vist i figur A nedenfor:

Figur A

Filer på skrivebordet som er eldre enn 180 dager (klikk for å forstørre)

Nå som du vet hvor mange elementer det er på skrivebordet du vil slette (eller i en hvilken som helst annen mappe du utpeker), kan du planlegge opprydding av disse elementene. Da jeg først kjørte denne kommandoen, var antall filer litt uanstendige, godt over 500. Nå som det er nede på to filer, er det ikke så ille.

Planlegge en PowerShell-kommando

Følg trinnene nedenfor for å lage en planlagt oppgave som kjører kommandoen ovenfor:

 Schtasks / create / tn "Desktop Cleanup Task" / ru "domain \ username" / rp / sc daglig / st 08:30 / tr "PowerShell-kommando {get-childitem c: \ brukere \\ desktop | hvor {$ _. lastwritetime -lt (dato) .adays (-180)} | remove-item " 

Whew, det virker som mange ting å gjøre på en linje. La oss se på brikkene hver for seg:

Først kaller vi schtasks og går videre til det / create, som forteller oppgaveplanleggeren at vi ønsker å lage en oppgave med følgende attributter:

  • / tn - dette er navnet på oppgaven, som brukes til å identifisere den når du ser på planlagte oppgaver eller modifiserer oppgaver som tidligere ble opprettet
  • / ru - dette er brukernavnet (domenet \ brukernavnet) som brukes til å kjøre oppgaven
  • / rp - passordet for kontoen som er spesifisert i / ru Merk: Jeg forventet at kommandoen skulle be om et passord hvis / rp ble utelatt, men ikke så at det skulle skje. Det er den eneste grunnen til at det er spesifisert her.
  • / sc daglig - dette er tidsplanparameteren - jeg spesifiserte daglig her
  • / st - starttidspunkt for oppgaven - i dette eksemplet er det 08:30
  • / tr - dette er oppgaven å kjøre - her kaller vi PowerShell og gir en kommando til -kommandoparameteren

Nå som den planlagte oppgavedelen er ute av veien, er alt som gjenstår å bygge PowerShell-kommandoen vår, vist nedenfor:

 "PowerShell -kommando {Get-childitem -path c: \ brukere \ brukernavn \ desktop | der {$ _. Lastwritetime -lt (dato) .adddays (-180)} | remove-item}" 
Hele kommandoen er inkludert i anførselstegn for å sikre at den blir håndtert sammen. Den første delen av kommandoen er den samme som koden som brukes til å se etter filer som er eldre enn 180 dager. Merk: de krøllete selene som følger -kommandoparameteren sender all den vedlagte koden som en skriptblokk. Disse er ikke påkrevd for å kjøre denne kommandoen.

Det eneste som er lagt til den opprinnelige kommandoen, er å rense utdataene fra hvor {} -delen for å fjerne elementet, som vil slette elementene som oppfyller kriteriene for å være eldre enn 180 dager.

Når du skriver inn hele kommandoen i PowerShell, vil du få en melding (hvis alt er riktig stavet) om at oppgaven ble opprettet. Hvis oppgavens navn allerede eksisterer, blir du bedt om å overskrive det med den nye oppgaven.

Hva om jeg vil endre tiden?

Anta at du opprettet denne oppgaven, og bestem deg etter noen måneder at du ønsket å kjøre den klokka 10:00 i stedet for 08:30. Du kan ganske enkelt bruke skjemaer for å endre tiden ved å legge inn følgende på PowerShell-kommandolinjen:

 Sktasks / endre / tn "Desktop Cleanup" / st 10:00 

Dette vil oppdatere starttidspunktet for oppgaven til 10:00. Oppgaven din med den nye tiden vil være synlig i Windows oppgaveplanlegging.

Forhåpentligvis planlegger oppgaver fra PowerShell for å kjøre PowerShell-kommandoer, gjør filopprydding andre rutineoppgaver litt raskere for deg. Jeg vet at det har det for meg.

© Copyright 2021 | pepebotifarra.com