Powershell skript som planlagt oppgave

Jeg har en situasjon hvor jeg trenger å sette noen sikkerhetspolicier med jevne mellomrom. Så hvorfor ikke bruke Powershell sammen med Oppgaveplanlegger?

Plutselig så har gaming-PC’en vår hjemme begynt å tvinge igjennom bruk av Ctrl+Alt+Del ved pålogging og skjule listen over brukere. Dette gjør det litt kronglete for barna å logge på sine brukere.

Lokale sikkerhetspolicier som trenger å endres.
De to reglene som stadig endrer seg

Jeg mistenker at dette er en sikkerhetspolicy jeg påtvinges av arbeidsgiver siden jeg har logget på jobb-kontoen i Microsoft Edge, men jeg har gitt opp å finne ut av det, og lagde meg heller en workaround hvor jeg har satt opp et Powershell-skript som jeg kjører ved oppstart av maskinen, en gang i timen og ved låsing av maskinen.

Endre sikkerhetspolicier med Powershell

Her var jeg lat og brukte Bing Copilot (har lisens via jobben) til å lage selve Powershell-skriptet for meg. Jeg copierte det over i Visual Studio Code hvor jeg la på noen kommentarer og lagret skriptet i en fil.

# Sett at bruker ikke trenger å trykke Ctrl+Alt+Del 
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "DisableCAD" -Value 1
# Sett at siste brukere skal vises
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "DontDisplayLastUserName" - Value 0

Et lite tips hvis du bruker en AI bot til å lage kildekode for deg: Sjekk parametere ekstra godt! Selv om jeg syntes jeg promptet CoPilot veldig typelig og korrekt, så hadde CoPilot satt feil verdi på det siste parameteret (1 istedet for 0).

Windows Oppgaveplanlegging

Her må man holde tunga rett i munnen. Jeg tenkte først at det bare var å velge fila jeg hadde laget som et kjørbart program, men det fungerte ikke. Det er Powershell som er programmet og fila som er parameteret.

Windows Oppgaveplanlegging, rediger handling.
Min planlagte oppgave

Som «Utløsere» så har jeg satt opp tre ting:

  • Ved oppstart av maskin
  • Daglig, med repetering hver time
  • Ved skjermlås (altså om noen logger ut eller låser skjermen på en eller annen måte)

Program/skript feltet skal bare inneholde «powershell». Så er det tre argumenter jeg har lagt til i feltet for argumenter:

  • -NoProfile : Dette sørger for at Powershell ikke samtidig eksekverer eventuelle skripts som ligger på profilen til brukeren som Oppgaveplanleggeren bruker.
  • -ExecutionPolicy Bypass : Denne sørger for at eventuelle eksekveringsregler ignoreres.
  • -File : Etterfulgt av selve stien til Powershell skriptet.

Med disse parameterne sørger jeg for at skriptet bruker nesten ikke noen ressurser på å kjøre og selve kjøretiden er på et par millisekunder, derfor gjør det ikke noe å kjøre det så ofte som en gang i timen.

Jeg er usikker på om jeg trenger å ha mappen der skriptet ligger i «Start i» feltet også, men det skader jo ikke, så jeg har lagt det inn der.

Tilslutt er det viktig å krysse av for at skriptet skal kjøres med opphøyde rettigheter slik at det faktisk har rettigheter til å endre policyene.

En kommentar om “Powershell skript som planlagt oppgave”

Legg igjen en kommentar