- PowerShell muliggør meget kraftfuld automatisering, selv med konti uden administratorrettigheder, forudsat at scriptsene er designet med den tilgængelige sikkerhedskontekst i tankerne.
- Windows Opgaveplanlægger er nøglen til automatisk at køre PowerShell-scripts, kontrollere tidsplaner, betingelser og udførelsesantal.
- Korrekt konfiguration af udførelsespolitikker, minimumstilladelser og scriptsignering reducerer risici og gør automatisering sikker og vedligeholdelsesvenlig.
- Ved at kombinere PowerShell, planlagte opgaver og fjernværktøjer kan du dække alt fra simple lokale opgaver til avanceret Microsoft 365- og IIS-administration.
Hvis du undrer dig over hvordan Automatiser opgaver i PowerShell uden at være administratorDu er ikke alene. Det er et meget almindeligt scenarie: Du skal køre scripts, planlægge oprydninger, generere rapporter eller administrere Microsoft 365, men du har ikke forhøjede rettigheder på maskinen, eller du ønsker simpelthen ikke at bruge dem af sikkerhedsmæssige årsager.
Den gode nyhed er, at du ved at gøre dig bekendt med de værktøjer, Windows tilbyder (PowerShell, Opgavestyring og nogle kommandolinjeindstillinger), kan oprette et system af ret kraftfuld automatisering uden at røre administratorkontoenDet er dog vigtigt at forstå den kontekst, hvori scriptsene udføres, de begrænsninger, du har uden forhøjede rettigheder, og hvordan du konfigurerer alt for at forhindre fejl ved første lejlighed.
Kør PowerShell uden administratorrettigheder
Før vi dykker ned i avanceret automatisering, er det vigtigt at forstå, hvordan Åbn PowerShell uden forhøjede rettigheder Selvom Windows konstant tilsyneladende beder dig om at vælge "Kør som administrator", er dette simpelthen ikke en mulighed i mange virksomheds- eller delte miljøer.
Der er et meget nyttigt trick baseret på kommandoen runas Dette giver dig mulighed for at starte en PowerShell-session med et begrænset tillidsniveau, hvilket er ideelt til at arbejde uden at øge tilladelserne, selvom din brugerkonto har disse rettigheder. For at gøre dette skal du blot følge disse grundlæggende trin:
-
Åbn kommandoprompten (cmd) i normal tilstand, uden at bruge "Kør som administrator".
-
I cmd-vinduet skal du skrive denne kommando og trykke på Enter:
runas /trustlevel:0x20000 powershell
Denne kommando starter en ny PowerShell-session under en et mere begrænset tillidsniveauDette hjælper dig med at undgå visse problemer, når noget ikke fungerer korrekt i en forhøjet konsol. Et klassisk eksempel er installation af brugerværktøjer som f.eks. krydreHvis du forsøger at downloade eller konfigurere det fra en PowerShell-session med administratorrettigheder, kan processen mislykkes, hvorimod det fungerer uden problemer fra en session med normale tilladelser.
Denne tilgang passer rigtig godt ind i en filosofi om minimumsprivilegiumDu hæver kun tilladelser, når det er strengt nødvendigt, og lader det meste af automatiseringen køre med den samme kontekst, som en standard- eller daglig arbejdsbruger ville bruge.
PowerShell som fundament for moderne automatisering
PowerShell er meget mere end bare en blå konsol: det er en automatiseringsframework og scriptsprog Designet til at administrere Windows-systemer og, i de seneste versioner (PowerShell Core), også Linux og macOS. Det fungerer med cmdlets (specialiserede kommandoer), objekter og pipes, hvilket giver dig mulighed for at bygge komplekse opgaver ud fra meget små, genanvendelige dele.
Forskellen i forhold til den klassiske kommandoprompt er enorm: med PowerShell kan du Kædekommandoer, manipulere objekter, forespørge på logfiler, tjenester, IIS, SQL, Microsoft 365 og stort set alle Microsoft- eller tredjepartsprodukter, der har kompatible moduler. Dette gør det til et ideelt værktøj til at automatisere alt fra simple midlertidige filoprydninger til komplette webapplikationsimplementeringer.
Det er vigtigt at skelne mellem PowerShell (miljøet) og en PowerShell-scriptMiljøet er den konsol eller terminal, hvor du skriver interaktive kommandoer, mens et script er en .ps1-fil, der indeholder en ordnet rækkefølge af instruktioner, betingelser, funktioner og variabler, der er oprettet til at udføre gentagne opgaver uden at skulle skrive alt hver gang.
Disse PowerShell-scripts er fundamentet, som mange er bygget på. IT-automatiseringsstrategier: massebrugeradministration, opdateringsimplementering, systemovervågning, automatisk rapportgenerering, periodiske oprydningsopgaver osv. Og bedst af alt kan mange af disse scenarier køres uden direkte adgang til en lokal administratorkonto, så længe scriptet kun berører ressourcer, som din bruger allerede har adgang til.
Konfigurer PowerShell-miljøet og udførelsespolitikkerne
For at automatisering kan fungere problemfrit, er det nødvendigt at have kontrol over, hvordan automatiseringen opfører sig. PowerShell-udførelsespolitikDenne politik definerer, hvilke scripts der kan køres og hvorfra, og er normalt den første forhindring, man møder, når man begynder at automatisere.
De mest almindelige implementeringspolitikker er:
- begrænsetDette er standardindstillingen i mange installationer. Kun interaktive kommandoer er tilladt; .ps1-scripts er blokeret. Det er den sikreste mulighed, men i praksis, Det forhindrer enhver scriptbaseret automatisering.
- AllesigneretKun scripts, der er digitalt signeret af en betroet udgiver, kan udføres. Dette er egnet til miljøer, hvor du ønsker streng kontrol over koden der kører i holdene.
- RemoteSignedScripts, der downloades fra internettet eller eksterne steder, skal signeres, men usignerede lokale scripts kan udføres. Dette er en forholdsvis afbalanceret politik og meget almindelig i virksomhedsmiljøer.
- Ubegrænsettillader udførelse af ethvert script, uanset om det er signeret eller ej. Ikke anbefalet til produktion, fordi det udsætter systemet for en høj risiko.
Du kan tjekke din nuværende politik hos:
Get-ExecutionPolicy
Og rediger den (hvis din konto har tilladelse til det) ved hjælp af Set-ExecutionPolicyfor eksempel:
Set-ExecutionPolicy RemoteSigned
Hvis du ikke er administrator, kan du muligvis ikke ændre politikken på maskinniveau, men du kan justere den på bruger- eller procesniveau, afhængigt af din organisations konfiguration. Under alle omstændigheder skal du, når du planlægger automatisering uden forhøjede rettigheder, antage, at udførelsespolitikken Det er bare endnu en sikkerhedsbegrænsning, du må leve med. og design dine manuskripter i overensstemmelse hermed.
Opret og rediger nemt PowerShell-scripts
Selvom du kan skrive scripts i enhver teksteditor, er det meget mere praktisk at bruge værktøjer med syntaksfremhævning og udviklingshjælpemidlerisær efterhånden som scripts vokser og begynder at inkludere funktioner, moduler og kompleks logik.
De mest almindelige muligheder for at arbejde med PowerShell-scripts er:
- Visual Studio Code (VS Code)I dag er det den mulighed, der anbefales af Microsoft. Den er gratis, letvægts, og med den officielle PowerShell-udvidelse installeret tilbyder den autofuldførelse (IntelliSense), trinvis fejlfinding, snippets, Git-integration og en integreret terminal.
- PowerShell ISEDette er det klassiske integrerede miljø, der følger med Windows PowerShell 5.1 og tidligere versioner. Selvom det betragtes som ældre end VS Code, bruges det stadig i vid udstrækning i mange miljøer.
- Notepad eller andre simple editorer: egnet til små eller hurtige scripts, selvom du mister mange nyttige funktioner, der gør livet lettere, når koden bliver kompliceret.
I alle tilfælde er den grundlæggende proces ens: du opretter en ny fil, skriver PowerShell-koden og gemmer den med filtypenavnet. . Ps1 og så kører du det fra en konsol. Hvis du for eksempel gemmer scriptet i C:\Scripts\MiScript.ps1Du kan starte det fra PowerShell ved at gøre:
& "C:\Scripts\MiScript.ps1"
For at få alt dette til at passe med automatisering, skal du tænke over Hvad vil det script blive kaldt på en programmeret måde? uden at bruge administratorrettigheder, noget vi senere vil se med Opgaveplanlæggeren.
Automatiser med Windows Opgaveplanlægger og PowerShell
Windows Opgaveplanlægger er det værktøj, der giver dig mulighed for at udløser automatisk PowerShell-scripts i henhold til tidsplaner, begivenheder eller systemforhold. Selvom mange guider bruger det til opgaver med administratorrettigheder, er det også fuldt ud gyldigt til automatisering i en standardbrugerkontekst, forudsat at opgaven er konfigureret med den relevante konto.
Opgaveplanlægger-biblioteket organiserer alle opgaver i mapper og tilbyder for hver enkelt flere nøglefaner:
- Genereltnavn, beskrivelse, konto den kører under og sikkerhedsindstillinger (for eksempel om den kører, selvom brugeren ikke er logget ind).
- Udløserebestemmer, hvornår opgaven startes: ved login, ved tænding af computeren, hver dag, på et bestemt tidspunkt, når en begivenhed indtræffer osv.
- Handlingerdefinerer, hvad opgaven gør, når den udløses, normalt ved at starte et program, hvilket i dette tilfælde vil være powershell.exe med de passende argumenter.
- Betingelser: giver dig mulighed for at finjustere, når den kører: kun hvis computeren er tilsluttet en stikkontakt, hvis den er inaktiv i et stykke tid, hvis netværket opfylder bestemte karakteristika osv.
- IndstillingerYderligere indstillinger såsom at tillade udførelse efter behov, forsøg igen hvis det mislykkes, stop hvis det tager for lang tid, funktionsmåde hvis den allerede kører osv.
- Historielogger udførelser, fejl og advarsler, meget nyttigt til fejlfinding, når noget ikke kører som det skal.
For at starte et PowerShell-script fra Opgaveplanlægger er det typiske mønster på fanen Handlinger:
- Program / script:
powershell.exe - Tilføj argumenterNoget i den stil
-File C:\Scripts\MiScript.ps1tilføjelse af flere parametre om nødvendigt, f.eks.-ExecutionPolicy Bypasso-NoExitalt efter dine behov. - Start indvalgfri, mappe hvor scriptet er placeret, hvis du er afhængig af relative stier.
Ved at bruge standardbrugerkontoen som opgaveudførelseskonto (på fanen Generelt), køres scriptet med de samme tilladelser, som du har Når du logger ind, passer dette perfekt med præmissen om at automatisere uden at være administrator. Men hvis scriptet kræver adgang til dele af systemet, der er reserveret til administratorer, vil det fejle, så det er afgørende at designe hver opgave med den tilgængelige sikkerhedskontekst i tankerne.
Fordele ved at automatisere med Task Scheduler og PowerShell
Kombinationen af Opgaveplanlægger med PowerShell-scripts giver et overbevisende sæt fordele, selv uden forhøjede rettigheder. Nogle vigtige fordele inkluderer:
- TidsbesparelseGentagne opgaver såsom rengøring, rapportering eller dataeksport kører automatisk, mens du laver noget andet, eller endda når sessionen er lukket (hvis opgaven er konfigureret til det).
- konsistensScriptet gør altid præcis det samme, i samme rækkefølge, uden fejl, hvilket reducerer margenen for menneskelige fejl.
- pålidelighedDu kan planlægge regelmæssige rutiner (dagligt, ugentligt, månedligt), der holder systemet eller dine data i god stand, selv uden manuel indgriben.
- RessourceeffektivitetDet er nemt at planlægge scripts til perioder uden for spidsbelastningsperioder og undgå påvirkning af ydeevnen i spidsbelastningsperioder.
- fleksibilitettidsbaserede, loginbaserede, systemstartsbaserede eller hændelsesbaserede udløsere tillader automatiseringer, der er meget tilpasset dit miljø.
- fejlhåndteringDu kan konfigurere nye forsøg, logge PowerShell-output, sende e-mails eller skrive specifikke hændelser, når noget fejler.
- SikkerhedVed at køre scripts med begrænsede brugerkonti reducerer du risikoen for, at en scriptfejl forårsager alvorlig systemskade. Brug kun opgaver med bredere tilladelser, når det er absolut nødvendigt.
Til avanceret automatisering i store netværk tilbyder PowerShell endnu flere muligheder: med veldesignede planlagte opgaver kan du sammenkæde komplekse arbejdsgange, orkestrere opgaver på tværs af forskellige maskiner og automatisk reagere på specifikke hændelser.
Praktiske eksempler på automatisering med PowerShell
Når du har rammerne klare, er det, der virkelig gør forskellen, specifikke scripts, som du kørerDette er nogle meget almindelige scenarier, hvor PowerShell skinner, både i individuelle teams og i større miljøer.
Administration af Microsoft 365 med PowerShell
Inden for Microsoft 365-miljøet er PowerShell blevet det foretrukne værktøj til administrere brugere, licenser og tjenester på én gangMed de rigtige moduler kan du oprette forbindelse til din lejer og automatisere en god del af det daglige arbejde, som f.eks. Migrer brugerprofiler og OfficeTil at begynde med bruges normalt det klassiske MSOnline-modul (selvom Microsoft Graph-modulet og det moderne Exchange Online-modul er mere almindelige i dag). Den grundlæggende arbejdsgang ville være:
- Installer de nødvendige moduler (for eksempel fra en PowerShell-session med tilladelser til at installere moduler):
Install-Module -Name PowerShellGet -Force -AllowClobber
Install-Module -Name MSOnline - Opret forbindelse til tjenesten ved hjælp af dine Microsoft 365-administratoroplysninger:
Connect-MsolService
Derfra kan du automatisere opgaver som f.eks.:
- Massebrugerregistrering fra en CSV-fil, tildeling af adgangskoder og profilegenskaber.
- Ændringer i gruppemedlemskab baseret på regler (for eksempel flytning af brugere til bestemte sikkerhedsgrupper).
- Automatisk deaktivering af inaktive konti baseret på kriterier som datoen for sidste ændring af adgangskode eller login-dato.
- Generering af periodiske rapporter vedrørende brugeraktivitet, licenser i brug eller sikkerhedsstatus.
Disse scripts kan startes manuelt fra en konsol med de relevante tilladelser i Microsoft 365 eller integreres i planlagte opgaver på en administrationsserver. Selvom lejeradministration kræver en konto med høje tilladelser i skyen, er den computer, hvorfra du kører scriptet... Du behøver ikke nødvendigvis en lokal administratorkontoforudsat at du kan installere moduler og oprette forbindelse til fjerntjenester.
Lokal vedligeholdelsesautomatisering
På almindelige Windows-maskiner kan du, selv med en standardkonto, oprette scripts til at:
- Sikkerhedskopier brugermapper gennem kopier og synkronisering til et andet drev eller til en netværksplacering, hvor du har adgang.
- Rengør midlertidige filer og bloatware i dine profilstier, programcacher eller logfiler, der ikke kræver administratorrettigheder.
- Registrer disk-, CPU- eller hukommelsesforbrug Fra din kontos perspektiv, generering af rapporter i en mappe, hvor du kan skrive.
- Gennemgå interne processer eller brugertjenester, der ikke kræver forhøjede rettigheder for at kontrollere deres status.
Disse scripts, kombineret med Opgaveplanlæggeren, der kører under din brugerkonto, giver dig mulighed for at oprette en grundlæggende vedligeholdelses- og overvågningsrutine Meget praktisk, selv når IT-afdelingen ikke giver dig administratoradgang.
Fjernautomatisering med Splashtop og andre systemer
I miljøer, hvor arbejdet udføres eksternt, kan værktøjer som f.eks. Splashtop De tilføjer endnu et interessant lag. Denne type løsning giver sikker fjernadgang til udstyr og i nogle tilfælde specifikke funktioner til:
- Kaste kommandoprompter eller eksterne PowerShell-konsoller uden at skulle starte en fuld skrivebordssession.
- Kør PowerShell-scripts på flere endpoints samtidigt med revisionskontroller og centraliseret planlægning.
- Anvend politikker, implementer programrettelser eller afhjælpningsscripts på grupper af computere uden opsyn.
Splashtop AEM er for eksempel specifikt designet til at administrere og automatisere opgaver på tværs af store flåder af enhederDen integrerer problemfrit PowerShell-scriptkørsel i sin platform. Afhængigt af din konfiguration kan du udnytte disse funktioner, selvom din lokale konto ikke er en administrator, og delegerer dermed noget kontrol til fjernstyringssystemet.
PowerShell-scripts til IIS, databaser og Web Deployment
På servere, der hoster webapplikationer på IIS, inkluderer Web Deploy version 2.1 et sæt PowerShell-scripts, der forenkler processen betydeligt. forberedelse af websteder til udgivelse ved hjælp af Web DeploySelvom serveradministratorrettigheder normalt kræves til den første opsætning, er det værd at være bekendt med dem, fordi de er en del af mange automatiserede implementeringsinfrastrukturer.
De vigtigste manuskripter er:
- OpsætningsstedTilPublish.ps1opretter eller konfigurerer et IIS-websted, en ikke-administratorinstallationsbruger og en publiceringsprofilfil (.publishsettings).
- OpretSqlDatabase.ps1opretter en SQL Server-database, et login og en bruger med db_owner-tilladelser og tilføjer forbindelsesstrengen til publiceringsfilen.
- OpretMinSqlDatabase.ps1: gør det samme, men for MySQL, opretter en database og en bruger med tilladelser til den.
- TilføjDelegationsregler.ps1Konfigurer delegeringsregler i IIS for at tillade Web Deploy at fungere korrekt i delegerede miljøer.
Manuskriptet OpsætSiteTilPubliceringFor eksempel kan den øjeblikkeligt montere et websted kaldet WDeploySite på en tilgængelig port (mellem 8080 og 8200), oprette en tilknyttet programpulje og generere en lokal ikke-administratorbruger (WDeploySiteuser) med tilladelser til webstedets fysiske mappe og de nødvendige tilladelser i IIS. Alle oplysninger gemmes i en .publishsettings-fil, der kan bruges af værktøjer som WebMatrix eller Visual Studio.
Databasescripts tilføjer til denne profil SQL Server- eller MySQL-forbindelsesstrengeogså oprettelse af logins og specifikke brugere med adgangskoder (som kan genereres automatisk eller defineres manuelt i scriptkaldet). Selvom disse værktøjer blev designet med privilegerede implementeringer i tankerne, passer deres filosofi med ideen om Giv hver applikation og hver proces den nødvendige minimumsadgangtydelig adskillelse af administrative konti og udgivelseskonti.
Bedste fremgangsmåder for sikkerhed og ydeevne i PowerShell-scripts
Enhver automatiseringsstrategi, især når den implementeres uden administratorrettigheder, skal være baseret på en række gode sikkerheds- og ydeevnepraksisser for at undgå problemer på mellemlang sigt.
Nogle vigtige tips er:
- Design scripts ved hjælp af princippet om mindst mulig privilegiumat hvert script kun berører de strengt nødvendige ressourcer, og at den konto, der kører det (standardbruger, servicekonto osv.), kun har de essentielle tilladelser.
- Signering af følsomme scripts og brug udførelsespolitikker, der kræver signering i det mindste for scripts, der downloades fra internettet eller deles på virksomhedens netværk.
- Beskyt legitimationsoplysninger og følsomme oplysningerundgå at gemme dem i almindelig tekst i scripts og ty til sikker lagring, krypterede miljøvariabler eller løsninger til synkroniser og krypter kopier i skyen hvor det er passende.
- Implementer robust fejlhåndteringBrug try/catch-blokke, logfejl, og send om muligt advarsler, når noget kritisk fejler.
- Optimer ydeevnenGenbrug funktioner og moduler, minimer unødvendige løkker, arbejd med native cmdlets, når det er muligt, og test forskellige tilgange til at reducere udførelsestider.
- Overvåg og revider planlagte opgaverGennemgå regelmæssigt Opgaveplanlæggerhistorikken, hændelseslogfiler og logfiler genereret af scripts for at registrere unormal adfærd eller tilbagevendende fejl.
- Test altid i udviklings- eller testmiljøer før implementering af en ny opgave eller et nyt script i produktion, især hvis det interagerer med kritiske systemer eller følsomme data.
Med alt dette i tankerne kan et meget kapabelt PowerShell-automatiseringsøkosystem bygges, understøttet af planlagte opgaver og fjernværktøjer, hvor Kun en lille del af infrastrukturen kræver meget privilegerede konti og resten kan håndteres af standardbrugere eller brugere med meget begrænsede tjenester. Ved omhyggelig planlægning af udførelseskontekster, scriptdesign og tilladelsesadministration er det fuldt ud muligt at automatisere en stor del af det daglige arbejde i Windows og Microsoft 365 uden konstant at være afhængig af administratorkontoen.
Passioneret forfatter om bytes-verdenen og teknologien generelt. Jeg elsker at dele min viden gennem skrivning, og det er det, jeg vil gøre i denne blog, vise dig alle de mest interessante ting om gadgets, software, hardware, teknologiske trends og mere. Mit mål er at hjælpe dig med at navigere i den digitale verden på en enkel og underholdende måde.




