Automatització a PowerShell sense ser administrador

Darrera actualització: 18/03/2026
Autor: Isaac
  • PowerShell permet una automatització molt potent fins i tot amb comptes sense privilegis dadministrador, sempre que els scripts es dissenyin pensant en el context de seguretat disponible.
  • El Programador de tasques de Windows és la peça clau per executar scripts de PowerShell de forma automàtica, controlant horaris, condicions i comptes d'execució.
  • La configuració adequada de polítiques d'execució, permisos mínims i signatura de seqüències redueix riscos i fa que l'automatització sigui segura i mantenible.
  • Combinant PowerShell, tasques programades i eines remotes es poden cobrir des de tasques locals senzilles fins a ladministració avançada de Microsoft 365 i IIS.

automatització en powershell sense ser administrador

Si t'estàs preguntant com automatitzar tasques a PowerShell sense ser administrador, no ets lúnic. És un escenari molt habitual: has de llançar scripts, programar neteges, generar informes o gestionar Microsoft 365, però no comptes amb privilegis elevats a la màquina o simplement no vols fer-los servir per motius de seguretat.

La bona notícia és que, coneixent bé les eines que ofereix Windows (PowerShell, el Programador de tasques i algunes opcions de línia d'ordres), pots muntar un sistema de automatització força potent sense tocar el compte d'administrador. Això sí, cal entendre bé en quin context s'executen els scripts, quins límits tens sense privilegis elevats i com configurar-ho tot perquè no falli a la primera de canvi.

Executar PowerShell sense drets d'administrador

Abans de ficar-nos en automatització avançada, convé tenir clar com obrir PowerShell sense elevar privilegis fins i tot quan Windows sembla empènyer-te sempre a «Executar com a administrador». A molts entorns corporatius o compartits, això simplement no és una opció.

Hi ha un truc molt útil basat en l'ordre runes que us permet iniciar una sessió de PowerShell amb un nivell de confiança restringit, ideal per treballar sense elevar permisos encara que el vostre usuari pugui fer-ho. Per això, només cal seguir aquests passos bàsics:

  1. Obre el símbol del sistema (cmd) en mode normal, sense utilitzar «Executar com a administrador».

  2. A la finestra de cmd, escriu aquesta ordre i prem Enter:

runes /trustlevel:0x20000 powershell

Amb aquesta ordre es llança una nova sessió de PowerShell sota un trust level més limitat, el que tajuda a evitar certs problemes quan alguna cosa no funciona bé en consola elevada. Un exemple clàssic és la instal·lació de ferramentes dusuari com Espicificar: si intenteu descarregar-la o configurar-la des d'una sessió de PowerShell amb drets d'administrador, el procés pot fallar, mentre que des d'una sessió amb permisos normals funciona sense enganxades.

Aquest enfocament encaixa molt bé amb una filosofia de mínim privilegi: només elevis permisos quan és estrictament necessari i deixes la major part de l'automatització funcionant amb el mateix context que faria servir un usuari estàndard o de treball diari.

PowerShell com a base de l'automatització moderna

scripts de powershell per a automatització

PowerShell és molt més que una simple consola blava: és un marc d'automatització i llenguatge de scripting pensat per administrar sistemes Windows i, a les seves versions més recents (PowerShell Core), també Linux i macOS. Treballa amb cmdlets (ordres especialitzades), objectes i canonades, cosa que permet construir tasques complexes a partir de peces molt petites i reutilitzables.

La diferència davant del símbol del sistema clàssic és abismal: amb PowerShell pots encadenar comandes, manipular objectes, consultar registres, serveis, IIS, SQL, Microsoft 365 i pràcticament qualsevol producte de Microsoft o de tercers que tingui mòduls compatibles. Això ho converteix en una eina ideal per automatitzar des de simples neteges de temporals fins a desplegaments complets d'aplicacions web.

És important distingir entre PowerShell (l'entorn) i un script de PowerShell. L'entorn és la consola o la terminal on escrius ordres interactives, mentre que un script és un fitxer .ps1 que conté una seqüència ordenada d'instruccions, condicions, funcions i variables creada per executar tasques repetitives sense haver d'escriure-ho tot cada cop.

Aquests scripts de PowerShell són la base sobre la qual es recolzen moltes estratègies d'automatització de TI: gestió massiva d'usuaris, desplegament d'actualitzacions, monitorització del sistema, generació d'informes automàtics, tasques periòdiques de neteja, etc. I, potser, molts d'aquests escenaris es poden executar sense accés directe a un compte d'administrador local, sempre que l'script només toqui recursos als quals el teu usuari ja tingui accés.

Configurar l'entorn de PowerShell i les polítiques d'execució

configuració de powershell per a scripts

Perquè l'automatització funcioni sense sobresalts, cal tenir controlat com es comporta la ExecutionPolicy de PowerShell. Aquesta política defineix quins scripts es poden executar i des d'on, i sol ser el primer escull amb què es topa qualsevol que comença a automatitzar.

Les polítiques dexecució més habituals són:

  • Restringit: és la configuració predeterminada en moltes instal·lacions. Només es permeten ordres interactives; els scripts .ps1 es bloquegen. És l'opció més segura però, a efectes pràctics, impedeix qualsevol automatització basada en scripts.
  • Tot signat: només es poden executar scripts signats digitalment per un editor de confiança. És adequada per a entorns on es vol control estricte sobre el codi que corre als equips.
  • Signat a distància: els scripts descarregats d'Internet o ubicacions remotes han d'estar signats, però els scripts locals sense signatura sí que es poden executar. És una política força equilibrada i molt habitual en entorns corporatius.
  • Sense restriccions: permet l'execució de qualsevol script, estigui signat o no. No es recomana per a producció perquè exposa el sistema a un risc elevat.
  Administrador de Tasques marca 0% d'ús de disc o xarxa: causes, diagnòstic i solucions

Pots consultar la teva política actual amb:

Get-ExecutionPolicy

I modificar-la (si el teu compte té permisos per fer-ho) usant Set-ExecutionPolicy, Per exemple:

Set-ExecutionPolicy RemoteSigned

Si no sou administrador, és possible que no pugueu canviar la política a nivell de màquina, però sí que podríeu ajustar-la a nivell d'usuari o de procés, segons la configuració de la vostra organització. En qualsevol cas, a l'hora de planejar automatització sense privilegis elevats, assumeix que la política d'execució és una restricció de seguretat més amb què has de conviure i dissenya els teus scripts en conseqüència.

Crear i editar scripts de PowerShell de forma còmoda

edició de scripts de powershell

Encara que pots escriure scripts en qualsevol editor de text, resulta molt més còmode fer servir eines amb ressaltat de sintaxi i ajuts al desenvolupament, sobretot quan els scripts creixen i comencen a incloure funcions, mòduls i lògica complexa.

Les opcions més comunes per treballar amb scripts de PowerShell són:

  • Codi Visual Studio (Codi VS): avui dia és l'opció recomanada per Microsoft. És gratuït, lleuger i, amb l'extensió oficial de PowerShell instal·lada, ofereix autocompletat (IntelliSense), depuració pas a pas, snippets, integració amb Git i terminal integrat.
  • ISS de PowerShell: és l'entorn integrat clàssic que ve amb Windows PowerShell 5.1 i versions anteriors. Encara que es considera heretat davant de VS Code, encara és molt utilitzat en molts entorns.
  • Bloc de notes o altres editors simples: vàlids per a scripts petits o ràpids, encara que perds moltes ajudes que faciliten la vida quan el codi es complica.

En tots els casos, el flux bàsic és similar: crees un nou fitxer, escrius el codi de PowerShell, el guardes amb l'extensió .ps1 i després ho executes des d'una consola. Per exemple, si deseu l'script a C:\Scripts\MiScript.ps1, pots llançar-ho des de PowerShell fent:

& "C:\Scripts\MiScript.ps1"

Perquè tot això encaixi amb l'automatització, hauràs de pensar en com es dirà aquest script de forma programada sense utilitzar privilegis d'administrador, veurem més endavant amb el Programador de tasques.

Automatitzar amb el Programador de tasques de Windows i PowerShell

programador de tasques i powershell

El Programador de tasques de Windows és la peça que et permet disparar scripts de PowerShell de forma automàtica segons horaris, esdeveniments o condicions del sistema. Encara que moltes guies el fan servir per a tasques amb privilegis d'administrador, també és perfectament vàlid per a automatització en context d'usuari estàndard, sempre que la tasca es configuri amb el compte adequat.

La biblioteca del Programador de tasques organitza totes les tasques en carpetes i, per a cadascuna, ofereix diverses pestanyes clau:

  • General: nom, descripció, compte amb la que s'executa i opcions de seguretat (per exemple, si s'executa encara que l'usuari no hagi iniciat sessió).
  • Triggers (Desencadenadors): determina quan es llança la tasca: en iniciar sessió, en encendre l'equip, cada dia, a una hora concreta, en produir-se un esdeveniment, etc.
  • Actions (Accions): defineix el que fa la tasca quan es dispara, normalment iniciar un programa, que en aquest cas serà powershell.exe amb els arguments apropiats.
  • Conditions (Condicions): permet afinar quan s'executa: només si l'equip està endollat, si està inactiu un temps, si la xarxa compleix certes característiques, etc.
  • Settings (Configuració): ajustaments addicionals com permetre execució sota demanda, reintents si falla, aturar si dura massa, comportament si ja està en marxa, etc.
  • History (Historial): registra les execucions, errors i advertiments, molt útil per depurar quan alguna cosa no sexecuta com hauria de.

Per llançar un script de PowerShell des del Programador de tasques, el patró típic a la pestanya Accions és:

  • Programa / script: powershell.exe
  • Afegeix arguments: una mica de l'estil -File C:\Scripts\MiScript.ps1, afegint si cal més paràmetres com -ExecutionPolicy Bypass o -NoExit segons les teves necessitats.
  • Comenceu: opcional, directori on hi ha l'script si depens de rutes relatives.

En utilitzar el compte d'usuari estàndard com a compte d'execució de la tasca (a la pestanya General), l'script s'executarà amb els mateixos permisos que tens tu quan inicies sessió, el que encaixa perfectament amb la premissa dautomatitzar sense ser administrador. Això sí, si l'script requereix tocar parts del sistema reservades a administradors, fallarà, així que és crucial dissenyar cada tasca pensant en el context de seguretat disponible.

  Per a què serveix UE-V (User Experience Virtualization) de Windows: guia total

Avantatges d'automatitzar amb Task Scheduler i PowerShell

Combinar el Programador de tasques amb scripts de PowerShell ofereix un paquet de beneficis molt interessant fins i tot sense fer servir privilegis elevats. Alguns avantatges clau són:

  • Estalvi de temps: tasques repetitives com neteges, informes o exportacions de dades s'executen soles mentre tu ets a una altra cosa o fins i tot amb la sessió tancada (si la tasca està configurada per fer-ho).
  • Consistència: l'script fa sempre exactament el mateix, en el mateix ordre, sense badades, cosa que redueix el marge d'error humà.
  • Fiabilitat: pots programar rutines regulars (diàries, setmanals, mensuals) que mantenen el sistema o les teves dades en bon estat, fins i tot sense intervenir de manera manual.
  • Eficiència de recursos: és fàcil planificar scripts per a hores de baixa càrrega, evitant impactes de rendiment en hores punta.
  • flexibilitat: els disparadors basats en temps, inici de sessió, inici del sistema o esdeveniments permeten automatitzacions molt adaptades al teu entorn.
  • Maneig d'errors: pots configurar reintents, registrar sortides de PowerShell, enviar correus o escriure esdeveniments específics quan alguna cosa falla.
  • Seguretat: en executar scripts amb comptes d'usuari acotats, reduïu el risc que un error de script provoqui danys seriosos al sistema. Només quan sigui absolutament necessari hauries de recórrer a tasques que facin servir comptes amb permisos més amplis.

Per a automatització avançada en xarxes grans, PowerShell encara dóna més joc: amb tasques programades ben dissenyades pots encadenar fluxos de treball complexos, orquestrar tasques en diferents màquines i respondre automàticament a esdeveniments concrets.

Exemples pràctics d'automatització amb PowerShell

Un cop tens clar el marc, el que realment marca la diferència són els scripts concrets que posis en marxa. Aquests són alguns escenaris molt habituals on PowerShell brilla, tant en equips individuals com en entorns més grans.

Gestió de Microsoft 365 amb PowerShell

En l'àmbit de Microsoft 365, PowerShell ha esdevingut l'eina de referència per a administrar usuaris, llicències i serveis en bloc. Amb els mòduls adequats, pots connectar-te al teu tenant i automatitzar una bona part del treball diari, com ara migrar perfils d'usuari i Office. Per començar sol emprar-se el mòdul clàssic de MSOnline (encara que avui dia es tendeix més al mòdul Microsoft Graph i al mòdul d'Exchange Online modern). El flux bàsic seria:

  1. Instal·lar els mòduls necessaris (per exemple, des d'una sessió de PowerShell amb permisos per instal·lar mòduls):
    Install-Module -Name PowerShellGet -Force -AllowClobber
    Install-Module -Name MSOnline
  2. Connectar amb el servei usant les credencials d'administrador de Microsoft 365:
    Connect-MsolService

A partir d'aquí, podeu automatitzar tasques com:

  • Alta massiva d'usuaris a partir d'un CSV, assignant contrasenyes i propietats de perfil.
  • Canvis de pertinença a grups basats en regles (per exemple, moure usuaris a grups de seguretat concrets).
  • Desactivació automàtica de comptes inactius segons criteris com la darrera data de canvi de contrasenya o d'inici de sessió.
  • Generació d'informes periòdics sobre activitat dusuaris, llicències en ús o estat de seguretat.

Aquests scripts es poden llançar manualment des d'una consola amb permisos adequats a Microsoft 365 o integrar-se en tasques programades en un servidor d'administració. Tot i que la gestió del tenant requereix un compte amb permisos alts al núvol, l'equip des del qual executes l'script no necessita necessàriament compte d'administrador local, sempre que pugueu instal·lar mòduls i connectar amb els serveis remots.

Automatització de manteniment local

A màquines Windows convencionals, fins i tot amb un compte estàndard pots crear scripts per a:

  • Recolzar carpetes d'usuari mitjançant còpies i sincronització a una altra unitat oa una ubicació de xarxa on tinguis accés.
  • Netejar fitxers temporals i bloatware a les vostres rutes de perfil, caches d'aplicacions o logs que no requereixin permisos d'administrador.
  • Registrar ús de disc, CPU o memòria des del punt de vista del vostre compte, generant informes en un directori on pugueu escriure.
  • Revisar processos propis o serveis d'usuari que no requereixin elevar privilegis per consultar-ne l'estat.

Aquests scripts, combinats amb el Programador de tasques executant-se amb el teu usuari, permeten muntar-ne una rutina de manteniment i monitorització bàsica molt arreglada fins i tot quan el departament dIT no et dóna accés dadministrador.

Automatització remota amb Splashtop i altres sistemes

En entorns on es treballa de forma remota, eines com Splashtop afegeixen una altra capa interessant. Aquest tipus de solucions proporciona accés remot segur a equips i, en alguns casos, capacitats específiques per a:

  • llançar símbols del sistema o consoles de PowerShell remotes sense necessitat diniciar una sessió descriptori completa.
  • Executar scripts de PowerShell a diversos endpoints alhora, amb controls d'auditoria i programació centralitzada.
  • Aplicar polítiques, desplegar pegats o scripts de correcció en grups d'equips de manera desatesa.
  Solucions si la barra de tasques o el menú Inici no responen al Windows

Splashtop AEM, per exemple, està orientat precisament a gestionar i automatitzar tasques en flotes grans de dispositius, integrant molt bé lexecució de scripts de PowerShell dins de la seva plataforma. Segons com es configuri, pots aprofitar aquestes capacitats fins i tot si el teu compte local no és administrador, delegant part del control al sistema de gestió remot.

Scripts de PowerShell per a IIS, bases de dades i Web Deploy

En servidors que allotgen aplicacions web a IIS, la versió 2.1 de Web Deploy inclou un conjunt d'scripts de PowerShell que faciliten moltíssim la preparació de llocs per a publicació mitjançant Web Deploy. Encara que aquí sí que es requereix normalment ser administrador del servidor per a la configuració inicial, convé conèixer-los perquè formen part de moltes infraestructures de desplegament automatitzat.

Els scripts principals són:

  • SetupSiteForPublish.ps1: crea o configura un lloc d'IIS, un usuari de desplegament no administrador i un fitxer de perfil de publicació (.publishsettings).
  • CreateSqlDatabase.ps1: crea una base de dades SQL Server, un inici de sessió i un usuari amb permisos db_owner, i afegeix la cadena de connexió al fitxer de publicació.
  • CreateMySqlDatabase.ps1: fa el mateix però per a MySQL, creant base de dades i usuari amb permisos sobre ella.
  • AddDelegationRules.ps1: configura regles de delegació a IIS per permetre que Web Deploy funcioni correctament en entorns delegats.

l'script SetupSiteForPublish, per exemple, és capaç de muntar de cop un lloc anomenat WDeploySite en un port disponible (entre 8080 i 8200), crear un grup d'aplicacions associat i generar un usuari local no administrador (WDeploySiteuser) amb permisos sobre el directori físic del lloc i els permisos necessaris a IIS. Tota la informació es desa en un fitxer .publishsettings que poden consumir eines com WebMatrix o Visual Studio.

Els scripts de bases de dades afegeixen a aquest perfil les cadenes de connexió de SQL Server o MySQL, creant també logins i usuaris específics amb contrasenyes (que poden generar-se automàticament o definir-se a mà a la crida a l'script). Tot i que aquestes eines es van dissenyar pensant en desplegaments amb privilegis, la seva filosofia encaixa amb la idea de donar a cada aplicació i cada procés el mínim accés necessari, separant clarament comptes administratius i comptes de publicació.

Bones pràctiques de seguretat i rendiment en scripts de PowerShell

Qualsevol estratègia d'automatització, i encara més quan es fa sense privilegis d'administrador, s'ha de recolzar en una sèrie de bones pràctiques de seguretat i rendiment per evitar problemes a mitjà termini.

Alguns consells fonamentals són:

  • Dissenyar scripts amb el principi de mínim privilegi: que cada script només toqui els recursos estrictament necessaris, i que el compte que l'executa (usuari estàndard, compte de servei, etc.) tingui únicament els permisos imprescindibles.
  • Signar scripts sensibles i utilitzar polítiques d'execució que obliguin la signatura almenys per a scripts descarregats d'Internet o compartits a la xarxa de l'empresa.
  • Protegir credencials i informació sensible, evitant emmagatzemar-les en text pla dins dels scripts i recorrent a magatzems segurs, variables d'entorn xifrades o solucions per a sincronitzar i xifrar còpies al núvol quan escaigui.
  • Implementar maneig d'errors robust: utilitzar blocs try/catch, registrar errors en logs i, si és possible, enviar alertes quan alguna cosa crítica falli.
  • Optimitzar el rendiment: reutilitzar funcions i mòduls, minimitzar bucles innecessaris, treballar amb cmdlets nadius sempre que sigui possible i provar diferents enfocaments per reduir temps d'execució.
  • Monitoritzar i auditar tasques programades: revisar periòdicament l'historial del Programador de tasques, els registres d'esdeveniments i els fitxers de log generats pels scripts per detectar comportaments anòmals o errors recurrents.
  • Provar sempre en entorns de desenvolupament o proves abans dimplantar una nova tasca o script en producció, sobretot si interactua amb sistemes crítics o dades delicades.

Amb tot això al cap, es pot muntar un ecosistema d'automatització a PowerShell molt capaç, recolzat en tasques programades i eines remotes, on només una petita part de la infraestructura requereix comptes altament privilegiats i la resta funcioni amb usuaris estàndard o de servei molt acotats. Planificant bé els contextos d'execució, el disseny d'scripts i la gestió de permisos, és perfectament viable automatitzar gran part del treball diari a Windows i Microsoft 365 sense dependre constantment del compte d'administrador.

desinstal·lar aplicacions preinstal·lades (Bloatware) mitjançant PowerShell
Article relacionat:
Com desinstal·lar aplicacions preinstal·lades i bloatware amb PowerShell a Windows 10 i 11