- PowerShell tillater svært kraftig automatisering selv med kontoer uten administratorrettigheter, forutsatt at skriptene er utformet med den tilgjengelige sikkerhetskonteksten i tankene.
- Windows Oppgaveplanlegger er nøkkelen til å kjøre PowerShell-skript automatisk, kontrollere tidsplaner, betingelser og antall utførelser.
- Riktig konfigurasjon av utførelsespolicyer, minimumstillatelser og skriptsignering reduserer risikoer og gjør automatisering trygg og vedlikeholdbar.
- Ved å kombinere PowerShell, planlagte oppgaver og eksterne verktøy kan du dekke alt fra enkle lokale oppgaver til avansert Microsoft 365- og IIS-administrasjon.
Hvis du lurer på hvordan Automatiser oppgaver i PowerShell uten å være administratorDu er ikke alene. Det er et veldig vanlig scenario: du må kjøre skript, planlegge opprydding, generere rapporter eller administrere Microsoft 365, men du har ikke utvidede rettigheter på maskinen, eller du vil rett og slett ikke bruke dem av sikkerhetsmessige årsaker.
Den gode nyheten er at ved å gjøre deg kjent med verktøyene Windows tilbyr (PowerShell, Oppgaveplanlegger og noen kommandolinjealternativer), kan du sette opp et system med ganske kraftig automatisering uten å berøre administratorkontoenDet er imidlertid viktig å forstå konteksten der skriptene kjøres, begrensningene du har uten utvidede rettigheter, og hvordan du konfigurerer alt for å forhindre feil ved første anledning.
Kjør PowerShell uten administratorrettigheter
Før vi går inn på avansert automatisering, er det viktig å forstå hvordan Åpne PowerShell uten forhøyede rettigheter Selv om Windows stadig vekk ber deg om å «Kjør som administrator», er dette rett og slett ikke et alternativ i mange bedrifts- eller delte miljøer.
Det finnes et veldig nyttig triks basert på kommandoen RunAs Dette lar deg starte en PowerShell-økt med et begrenset tillitsnivå, ideelt for å jobbe uten å heve tillatelser selv om brukerkontoen din har dem. For å gjøre dette, følg disse grunnleggende trinnene:
-
Åpne ledetekst (cmd) i normal modus, uten å bruke "Kjør som administrator".
-
I cmd-vinduet skriver du denne kommandoen og trykker Enter:
runas /trustlevel:0x20000 powershell
Denne kommandoen starter en ny PowerShell-økt under en mer begrenset tillitsnivåDette hjelper deg med å unngå visse problemer når noe ikke fungerer som det skal i en forhøyet konsoll. Et klassisk eksempel er å installere brukerverktøy som krydreHvis du prøver å laste ned eller konfigurere den fra en PowerShell-økt med administratorrettigheter, kan prosessen mislykkes, mens den fungerer uten problemer fra en økt med normale tillatelser.
Denne tilnærmingen passer godt inn i en filosofi om minst privilegiumDu hever bare tillatelser når det er strengt nødvendig, og lar mesteparten av automatiseringen kjøre med samme kontekst som en standard eller daglig arbeidsbruker ville brukt.
PowerShell som grunnlaget for moderne automatisering
PowerShell er mye mer enn bare en blå konsoll: det er en automatiseringsrammeverk og skriptspråk Utviklet for å administrere Windows-systemer og, i de nyeste versjonene (PowerShell Core), også Linux og macOS. Den fungerer med cmdlets (spesialiserte kommandoer), objekter og pipes, slik at du kan bygge komplekse oppgaver fra svært små, gjenbrukbare deler.
Forskjellen sammenlignet med den klassiske ledeteksten er enorm: med PowerShell kan du kjede kommandoer, manipulere objekter, spørre logger, tjenester, IIS, SQL, Microsoft 365 og så godt som alle Microsoft- eller tredjepartsprodukter som har kompatible moduler. Dette gjør det til et ideelt verktøy for å automatisere alt fra enkle midlertidige filoppryddinger til komplette distribusjoner av webapplikasjoner.
Det er viktig å skille mellom PowerShell (miljøet) og en PowerShell-skriptMiljøet er konsollen eller terminalen der du skriver interaktive kommandoer, mens et skript er en .ps1-fil som inneholder en ordnet sekvens av instruksjoner, betingelser, funksjoner og variabler som er laget for å utføre repeterende oppgaver uten å måtte skrive alt hver gang.
Disse PowerShell-skriptene er grunnlaget som mange er bygget på. IT-automatiseringsstrategier: massebrukeradministrasjon, distribusjon av oppdateringer, systemovervåking, automatisk rapportgenerering, periodiske oppryddingsoppgaver osv. Og best av alt, mange av disse scenariene kan kjøres uten direkte tilgang til en lokal administratorkonto, så lenge skriptet bare berører ressurser som brukeren din allerede har tilgang til.
Konfigurer PowerShell-miljøet og utførelsespolicyene
For at automatisering skal fungere knirkefritt, er det nødvendig å ha kontroll over hvordan automatiseringen oppfører seg. PowerShell-kjøringspolicyDenne policyen definerer hvilke skript som kan kjøres og hvorfra, og er vanligvis den første hindringen man møter når man begynner å automatisere.
De vanligste implementeringsreglene er:
- begrensetDette er standardinnstillingen i mange installasjoner. Bare interaktive kommandoer er tillatt; .ps1-skript er blokkert. Det er det sikreste alternativet, men i praksis, Det forhindrer all skriptbasert automatisering.
- AllsignertBare skript som er digitalt signert av en pålitelig utgiver kan kjøres. Dette er egnet for miljøer der du ønsker streng kontroll over koden som går i lagene.
- FjernsignertSkript som lastes ned fra internett eller eksterne steder må signeres, men usignerte lokale skript kan kjøres. Dette er en ganske balansert policy og svært vanlig i bedriftsmiljøer.
- Ubegrensettillater utførelse av ethvert skript, enten det er signert eller ikke. Ikke anbefalt for produksjon fordi det utsetter systemet for høy risiko.
Du kan sjekke din nåværende policy med:
Get-ExecutionPolicy
Og endre den (hvis kontoen din har tillatelse til det) ved å bruke Set-ExecutionPolicy, for eksempel:
Set-ExecutionPolicy RemoteSigned
Hvis du ikke er administrator, kan du kanskje ikke endre policyen på maskinnivå, men du kan justere den på bruker- eller prosessnivå, avhengig av organisasjonens konfigurasjon. Uansett, når du planlegger automatisering uten utvidede rettigheter, anta at utførelsespolicyen Det er bare enda en sikkerhetsbegrensning du må leve med. og utforme manusene dine deretter.
Opprett og rediger PowerShell-skript enkelt

Selv om du kan skrive skript i hvilken som helst tekstredigerer, er det mye mer praktisk å bruke verktøy med syntaksutheving og utviklingshjelpemidlerspesielt ettersom skript vokser og begynner å inkludere funksjoner, moduler og kompleks logikk.
De vanligste alternativene for å jobbe med PowerShell-skript er:
- Visual Studio Code (VS-kode)I dag er det alternativet som anbefales av Microsoft. Det er gratis, lett, og med den offisielle PowerShell-utvidelsen installert tilbyr det autofullføring (IntelliSense), trinnvis feilsøking, snippets, Git-integrasjon og en integrert terminal.
- PowerShell ISEDette er det klassiske integrerte miljøet som følger med Windows PowerShell 5.1 og tidligere versjoner. Selv om det regnes som eldre enn VS Code, er det fortsatt mye brukt i mange miljøer.
- Notisblokk eller andre enkle redigeringsprogrammer: egnet for små eller raske skript, selv om du mister mange nyttige funksjoner som gjør livet enklere når koden blir komplisert.
I alle tilfeller er den grunnleggende flyten lik: du oppretter en ny fil, skriver PowerShell-koden og lagrer den med utvidelsen. . Ps1 og så kjører du det fra en konsoll. Hvis du for eksempel lagrer skriptet i C:\Scripts\MiScript.ps1Du kan starte den fra PowerShell ved å gjøre følgende:
& "C:\Scripts\MiScript.ps1"
For å få alt dette til å passe med automatisering, må du tenke på Hva vil det skriptet bli kalt på en programmert måte? uten å bruke administratorrettigheter, noe vi skal se senere med Oppgaveplanleggeren.
Automatiser med Windows Oppgaveplanlegger og PowerShell

Windows Oppgaveplanlegger er verktøyet som lar deg utløs PowerShell-skript automatisk i henhold til tidsplaner, hendelser eller systemforhold. Selv om mange guider bruker den for oppgaver med administratorrettigheter, er den også helt gyldig for automatisering i en standard brukerkontekst, forutsatt at oppgaven er konfigurert med riktig konto.
Oppgaveplanlegger-biblioteket organiserer alle oppgaver i mapper, og for hver enkelt tilbyr det flere viktige faner:
- Informasjonnavn, beskrivelse, kontoen den kjører under og sikkerhetsalternativer (for eksempel om den kjører selv om brukeren ikke er logget inn).
- Utløsere: bestemmer når oppgaven startes: ved innlogging, når datamaskinen slås på, hver dag, på et bestemt tidspunkt, når en hendelse inntreffer, osv.
- Handlingerdefinerer hva oppgaven gjør når den utløses, vanligvis starter et program, som i dette tilfellet vil være powershell.exe med de riktige argumentene.
- Betingelser: lar deg finjustere når den kjører: bare hvis datamaskinen er koblet til strøm, hvis den er inaktiv en stund, hvis nettverket oppfyller visse egenskaper, osv.
- Innstillingertilleggsinnstillinger som å tillate utførelse på forespørsel, nye forsøk hvis det mislykkes, stoppe hvis det tar for lang tid, virkemåte hvis den allerede kjører, osv.
- Historielogger utførelser, feil og advarsler, veldig nyttig for feilsøking når noe ikke kjører som det skal.
For å starte et PowerShell-skript fra Oppgaveplanlegger, er det typiske mønsteret på Handlinger-fanen:
- Program / skript:
powershell.exe - Legg til argumenterNoe sånt
-File C:\Scripts\MiScript.ps1legge til flere parametere om nødvendig, for eksempel-ExecutionPolicy Bypasso-NoExiti henhold til dine behov. - Start ivalgfri, katalogen der skriptet ligger hvis du er avhengig av relative stier.
Ved å bruke standardbrukerkontoen som oppgaveutførelseskonto (i Generelt-fanen), vil skriptet kjøre med de samme tillatelsene som du har Når du logger inn, passer dette perfekt med premisset om å automatisere uten å være administrator. Men hvis skriptet krever tilgang til deler av systemet som er reservert for administratorer, vil det mislykkes, så det er avgjørende å utforme hver oppgave med den tilgjengelige sikkerhetskonteksten i tankene.
Fordeler med å automatisere med Oppgaveplanlegger og PowerShell
Å kombinere Oppgaveplanlegger med PowerShell-skript gir en rekke overbevisende fordeler, selv uten utvidede rettigheter. Noen viktige fordeler inkluderer:
- TidsbesparendeRepeterende oppgaver som rengjøring, rapportering eller dataeksport kjøres automatisk mens du gjør noe annet, eller til og med med økten lukket (hvis oppgaven er konfigurert til å gjøre det).
- konsistensManuset gjør alltid nøyaktig det samme, i samme rekkefølge, uten feil, noe som reduserer marginen for menneskelige feil.
- pålitelighetDu kan planlegge regelmessige rutiner (daglig, ukentlig, månedlig) som holder systemet eller dataene dine i god stand, selv uten manuell inngripen.
- RessurseffektivitetDet er enkelt å planlegge skript for perioder utenom rushtid, slik at du unngår ytelsespåvirkning i rushtiden.
- fleksibilitettidsbaserte, påloggingsbaserte, systemoppstartsbaserte eller hendelsesbaserte utløsere tillater automatiseringer som er svært tilpasset ditt miljø.
- feilhåndteringDu kan konfigurere nye forsøk, logge PowerShell-utdata, sende e-poster eller skrive spesifikke hendelser når noe feiler.
- SikkerhetVed å kjøre skript med begrensede brukerkontoer reduserer du risikoen for at en skriptfeil forårsaker alvorlig systemskade. Bruk bare oppgaver med bredere tillatelser når det er absolutt nødvendig.
For avansert automatisering i store nettverk tilbyr PowerShell enda flere muligheter: med godt utformede planlagte oppgaver kan du kjede sammen komplekse arbeidsflyter, orkestrere oppgaver på tvers av forskjellige maskiner og automatisk reagere på spesifikke hendelser.
Praktiske eksempler på automatisering med PowerShell
Når du har rammeverket klart, er det som virkelig utgjør forskjellen spesifikke skript du kjørerDette er noen svært vanlige scenarier der PowerShell skinner, både i individuelle team og i større miljøer.
Administrere Microsoft 365 med PowerShell
Innenfor Microsoft 365-miljøet har PowerShell blitt det foretrukne verktøyet for administrere brukere, lisenser og tjenester samtidigMed de riktige modulene kan du koble deg til leietakeren din og automatisere en god del av det daglige arbeidet, som for eksempel Migrer brukerprofiler og OfficeTil å begynne med brukes vanligvis den klassiske MSOnline-modulen (selv om Microsoft Graph-modulen og den moderne Exchange Online-modulen er mer vanlige nå for tiden). Den grunnleggende arbeidsflyten ville være:
- Installer de nødvendige modulene (for eksempel fra en PowerShell-økt med tillatelser til å installere moduler):
Install-Module -Name PowerShellGet -Force -AllowClobber
Install-Module -Name MSOnline - Koble til tjenesten med Microsoft 365-administratorlegitimasjonen din:
Connect-MsolService
Derfra kan du automatisere oppgaver som:
- Massebrukerregistrering fra en CSV-fil, tilordne passord og profilegenskaper.
- Endringer i gruppemedlemskap basert på regler (for eksempel å flytte brukere til bestemte sikkerhetsgrupper).
- Automatisk deaktivering av inaktive kontoer basert på kriterier som dato for siste passordendring eller innloggingsdato.
- Generering av periodiske rapporter angående brukeraktivitet, lisenser i bruk eller sikkerhetsstatus.
Disse skriptene kan startes manuelt fra en konsoll med riktige tillatelser i Microsoft 365 eller integreres i planlagte oppgaver på en administrasjonsserver. Selv om leietakeradministrasjon krever en konto med høye tillatelser i skyen, må datamaskinen du kjører skriptet fra... Du trenger ikke nødvendigvis en lokal administratorkontoforutsatt at du kan installere moduler og koble til eksterne tjenester.
Lokal vedlikeholdsautomatisering
På vanlige Windows-maskiner, selv med en standardkonto, kan du opprette skript for å:
- Sikkerhetskopier brukermapper gjennom kopier og synkronisering til en annen stasjon eller til en nettverksplassering der du har tilgang.
- Rengjør midlertidige filer og oppblåst programvare i profilbanene dine, programbuffere eller logger som ikke krever administratorrettigheter.
- Registrer disk-, CPU- eller minnebruk Fra kontoens perspektiv, generering av rapporter i en katalog der du kan skrive.
- Gjennomgå interne prosesser eller brukertjenester som ikke krever utvidede rettigheter for å sjekke statusen sin.
Disse skriptene, kombinert med Oppgaveplanleggeren som kjører under brukerkontoen din, lar deg sette opp en grunnleggende vedlikeholds- og overvåkingsrutine Veldig nyttig selv når IT-avdelingen ikke gir deg administratortilgang.
Fjernautomatisering med Splashtop og andre systemer
I miljøer der arbeidet utføres eksternt, brukes verktøy som Splashtop De legger til et annet interessant lag. Denne typen løsning gir sikker fjerntilgang til utstyr og, i noen tilfeller, spesifikke funksjoner for:
- Kaste ledetekster eller eksterne PowerShell-konsoller uten å måtte starte en full skrivebordsøkt.
- Kjør PowerShell-skript på flere endepunkter samtidig, med revisjonskontroller og sentralisert planlegging.
- Bruk policyer, distribuer oppdateringer eller utbedringsskript til grupper av datamaskiner uten tilsyn.
Splashtop AEM er for eksempel spesielt utviklet for å administrere og automatisere oppgaver på tvers av store enhetsflåterDen integrerer sømløst PowerShell-skriptkjøring i plattformen. Avhengig av konfigurasjonen din kan du utnytte disse funksjonene selv om den lokale kontoen din ikke er en administrator, og delegerer noe kontroll til det eksterne administrasjonssystemet.
PowerShell-skript for IIS, databaser og Web Deployment
På servere som er vert for webapplikasjoner på IIS, inkluderer Web Deploy versjon 2.1 et sett med PowerShell-skript som forenkler prosessen betraktelig. klargjøre nettsteder for publisering ved hjelp av Web DeploySelv om serveradministratorrettigheter vanligvis kreves for første oppsett, er det verdt å være kjent med dem fordi de er en del av mange automatiserte distribusjonsinfrastrukturer.
De viktigste manusene er:
- SetupSiteForPublish.ps1oppretter eller konfigurerer et IIS-nettsted, en distribusjonsbruker som ikke er administrator, og en publiseringsprofilfil (.publishsettings).
- CreateSqlDatabase.ps1oppretter en SQL Server-database, en pålogging og en bruker med db_owner-tillatelser, og legger til tilkoblingsstrengen i publiseringsfilen.
- OpprettMinSql-database.ps1: gjør det samme, men for MySQL, og oppretter en database og en bruker med tillatelser til den.
- Legg til delegeringsregler.ps1Konfigurer delegeringsregler i IIS for å tillate at Web Deploy fungerer riktig i delegerte miljøer.
Manuset Oppsett av nettsted for publiseringFor eksempel kan den umiddelbart montere et nettsted kalt WDeploySite på en tilgjengelig port (mellom 8080 og 8200), opprette en tilknyttet applikasjonspool og generere en lokal ikke-administratorbruker (WDeploySiteuser) med tillatelser på nettstedets fysiske katalog og nødvendige tillatelser i IIS. All informasjonen lagres i en .publishsettings-fil som kan brukes av verktøy som WebMatrix eller Visual Studio.
Databaseskript legger til i denne profilen SQL Server- eller MySQL-tilkoblingsstrengerogså opprette pålogginger og spesifikke brukere med passord (som kan genereres automatisk eller defineres manuelt i skriptkallet). Selv om disse verktøyene ble utviklet med tanke på privilegerte distribusjoner, passer filosofien deres med ideen om gi hver applikasjon og hver prosess minimum nødvendig tilgangtydelig skille administrasjonskontoer og publiseringskontoer.
Beste fremgangsmåter for sikkerhet og ytelse i PowerShell-skript
Enhver automatiseringsstrategi, spesielt når den implementeres uten administratorrettigheter, må stole på en rekke gode sikkerhets- og ytelsespraksiser for å unngå problemer på mellomlang sikt.
Noen viktige tips er:
- Design skript ved hjelp av prinsippet om minste privilegiumat hvert skript bare berører de strengt nødvendige ressursene, og at kontoen som kjører det (standardbruker, tjenestekonto osv.) bare har de nødvendige tillatelsene.
- Signering av sensitive skript og bruk utførelsespolicyer som krever signering i det minste for skript som er lastet ned fra Internett eller delt på bedriftsnettverket.
- Beskytt legitimasjon og sensitiv informasjonunngå å lagre dem i ren tekst i skript og ty til sikker lagring, krypterte miljøvariabler eller løsninger for synkronisere og kryptere kopier i skyen der det er passende.
- Implementer robust feilhåndteringBruk try/catch-blokker, logg feil, og send varsler hvis mulig når noe kritisk feiler.
- Optimaliser ytelsengjenbruk av funksjoner og moduler, minimer unødvendige løkker, arbeid med innebygde cmdleter når det er mulig, og teste ulike tilnærminger for å redusere utførelsestider.
- Overvåk og revider planlagte oppgaverGjennomgå historikken, hendelsesloggene og loggfilene som genereres av skript for Oppgaveplanlegger med jevne mellomrom for å oppdage unormal oppførsel eller gjentakende feil.
- Test alltid i utviklings- eller testmiljøer før du implementerer en ny oppgave eller et nytt skript i produksjon, spesielt hvis det samhandler med kritiske systemer eller sensitive data.
Med alt dette i tankene kan et svært kapabelt PowerShell-automatiseringsøkosystem bygges, støttet av planlagte oppgaver og eksterne verktøy, der Bare en liten del av infrastrukturen krever kontoer med høye privilegier og resten kan håndteres av standardbrukere eller brukere med svært begrensede tjenester. Ved å planlegge utførelseskontekster, skriptdesign og tillatelsesadministrasjon nøye, er det fullt mulig å automatisere mye av det daglige arbeidet i Windows og Microsoft 365 uten å stadig være avhengig av administratorkontoen.
Lidenskapelig forfatter om verden av bytes og teknologi generelt. Jeg elsker å dele kunnskapen min gjennom å skrive, og det er det jeg skal gjøre i denne bloggen, vise deg alle de mest interessante tingene om dingser, programvare, maskinvare, teknologiske trender og mer. Målet mitt er å hjelpe deg med å navigere i den digitale verden på en enkel og underholdende måte.

