Automazione in PowerShell senza privilegi di amministratore

Ultimo aggiornamento: 18/03/2026
Autore: Isaac
  • PowerShell consente un'automazione molto potente anche con account privi di privilegi di amministratore, a condizione che gli script siano progettati tenendo conto del contesto di sicurezza disponibile.
  • L'Utilità di pianificazione di Windows è fondamentale per eseguire automaticamente gli script PowerShell, controllando pianificazioni, condizioni e conteggi di esecuzione.
  • Una corretta configurazione delle politiche di esecuzione, dei permessi minimi e della firma degli script riduce i rischi e rende l'automazione sicura e gestibile.
  • Combinando PowerShell, attività pianificate e strumenti remoti, è possibile gestire qualsiasi tipo di attività, dalle semplici operazioni locali alla gestione avanzata di Microsoft 365 e IIS.

Automazione in PowerShell senza privilegi di amministratore

Se ti stai chiedendo come automatizzare le attività in PowerShell senza privilegi di amministratore , non sei il solo. È uno scenario molto comune: devi eseguire script, pianificare pulizie, generare report o gestire Microsoft 365, ma non disponi di privilegi elevati sul computer o semplicemente non vuoi utilizzarli per motivi di sicurezza.

La buona notizia è che, con una buona conoscenza degli strumenti offerti da Windows (PowerShell, Utilità di pianificazione e alcune opzioni da riga di comando), è possibile configurare un sistema di automazione piuttosto potente senza utilizzare l'account amministratore . Tuttavia, è necessario comprendere appieno il contesto in cui vengono eseguiti gli script, le limitazioni che si incontrano senza privilegi elevati e come configurare tutto per prevenire errori fin dall'inizio.

Eseguire PowerShell senza diritti di amministratore

Prima di addentrarci nell'automazione avanzata, è importante capire come aprire PowerShell senza elevare i privilegi, anche se Windows sembra spingerti costantemente a "Esegui come amministratore". In molti ambienti aziendali o condivisi, questa opzione non è semplicemente praticabile.

Esiste un trucco molto utile basato sul comando `runas` che permette di avviare una sessione PowerShell con un livello di attendibilità limitato, ideale per lavorare senza dover elevare i privilegi, anche se il proprio account utente li possiede. Per farlo, basta seguire questi semplici passaggi:

  1. Apri il prompt dei comandi (cmd) in modalità normale, senza utilizzare "Esegui come amministratore".

  2. Nella finestra del prompt dei comandi, digita questo comando e premi Invio:

runas /trustlevel:0x20000 powershell

Questo comando avvia una nuova sessione PowerShell con un livello di attendibilità più limitato , aiutandoti a evitare alcuni problemi quando qualcosa non funziona correttamente in una console con privilegi elevati. Un esempio classico è l'installazione di strumenti utente come Spicetify : se provi a scaricarlo o configurarlo da una sessione PowerShell con privilegi di amministratore, il processo potrebbe fallire, mentre funziona senza problemi da una sessione con autorizzazioni normali.

Questo approccio si sposa perfettamente con la filosofia del minimo privilegio : si elevano i permessi solo quando strettamente necessario e si lascia che la maggior parte dell'automazione venga eseguita con lo stesso contesto che userebbe un utente standard o un utente che effettua le normali attività lavorative.

PowerShell come fondamento dell'automazione moderna

Script PowerShell per l'automazione

PowerShell è molto più di una semplice console blu: è un framework di automazione e un linguaggio di scripting progettato per gestire i sistemi Windows e, nelle sue versioni più recenti (PowerShell Core), anche Linux e macOS. Funziona con cmdlet (comandi specializzati), oggetti e pipe, consentendo di creare attività complesse a partire da componenti piccoli e riutilizzabili.

La differenza rispetto al classico prompt dei comandi è enorme: con PowerShell è possibile concatenare comandi, manipolare oggetti, interrogare log, servizi, IIS, SQL, Microsoft 365 e praticamente qualsiasi prodotto Microsoft o di terze parti con moduli compatibili. Questo lo rende uno strumento ideale per automatizzare qualsiasi operazione, dalla semplice pulizia di file temporanei alla distribuzione completa di applicazioni web.

È importante distinguere tra PowerShell (l'ambiente) e uno script PowerShell . L'ambiente è la console o il terminale in cui si digitano i comandi interattivi, mentre uno script è un file .ps1 contenente una sequenza ordinata di istruzioni, condizioni, funzioni e variabili, creato per eseguire attività ripetitive senza dover digitare tutto ogni volta.

Questi script PowerShell sono alla base di numerose strategie di automazione IT : gestione in blocco degli utenti, distribuzione degli aggiornamenti, monitoraggio del sistema, generazione automatica di report, attività di pulizia periodiche e altro ancora. Il vantaggio principale è che molti di questi scenari possono essere eseguiti senza accesso diretto a un account amministratore locale, a condizione che lo script acceda solo alle risorse a cui l'utente ha già accesso.

Configurare l'ambiente PowerShell e i criteri di esecuzione

Configurazione di PowerShell per gli script

Affinché l'automazione funzioni senza intoppi, è fondamentale comprendere il comportamento di ExecutionPolicy di PowerShell . Questa policy definisce quali script possono essere eseguiti e da dove, ed è spesso il primo ostacolo che si incontra quando si inizia ad automatizzare.

Le politiche di implementazione più comuni sono:

  • LimitatoQuesta è l'impostazione predefinita in molte installazioni. Sono consentiti solo i comandi interattivi; gli script .ps1 sono bloccati. È l'opzione più sicura, ma in pratica, Impedisce qualsiasi automazione basata su script.
  • Tutti firmatiPossono essere eseguiti solo script firmati digitalmente da un editore fidato. Questo è adatto per ambienti in cui si desidera controllo rigoroso sul codice che si manifesta nelle squadre.
  • Firmato a distanzaGli script scaricati da Internet o da posizioni remote devono essere firmati, ma gli script locali non firmati possono essere eseguiti. Si tratta di una politica piuttosto equilibrata e molto comune negli ambienti aziendali.
  • illimitato: consente l'esecuzione di qualsiasi script, firmato o meno. Non consigliato per la produzione perché espone il sistema a un rischio elevato.
  Come eliminare i file in modo che non siano più recuperabili su nessuna unità

Puoi verificare la tua polizza attuale con:

Get-ExecutionPolicy

E modificalo (se il tuo account ha le autorizzazioni per farlo) usando Set-ExecutionPolicy , ad esempio:

Set-ExecutionPolicy RemoteSigned

Se non si dispone dei privilegi di amministratore, potrebbe non essere possibile modificare i criteri a livello di macchina, ma si potrebbe intervenire a livello di utente o di processo, a seconda della configurazione dell'organizzazione. In ogni caso, quando si pianifica l'automazione senza privilegi elevati, è bene considerare i criteri di esecuzione come un'ulteriore restrizione di sicurezza con cui si dovrà convivere e progettare gli script di conseguenza.

Crea e modifica facilmente script PowerShell

modifica degli script PowerShell

Sebbene sia possibile scrivere script in qualsiasi editor di testo, è molto più comodo utilizzare strumenti con evidenziazione della sintassi e ausili per gli sviluppatori , soprattutto quando gli script diventano più complessi e iniziano a includere funzioni, moduli e logiche elaborate.

Le opzioni più comuni per lavorare con gli script PowerShell sono:

  • Codice di Visual Studio (contro codice)Oggi è l'opzione consigliata da Microsoft. È gratuita, leggera e, con l'estensione ufficiale di PowerShell installata, offre completamento automatico (IntelliSense), debug passo passo, snippet, integrazione con Git e un terminale integrato.
  • Power Shell ISESi tratta del classico ambiente integrato fornito con Windows PowerShell 5.1 e versioni precedenti. Sebbene considerato obsoleto rispetto a VS Code, è ancora ampiamente utilizzato in molti contesti.
  • Blocco note o altri editor sempliciAdatto per script piccoli o veloci, anche se si perdono molte utili funzionalità che semplificano la vita quando il codice diventa complesso.

In tutti i casi, il flusso di base è simile: si crea un nuovo file, si scrive il codice PowerShell e lo si salva con l'estensione. . Ps1 e poi lo esegui da una console. Ad esempio, se salvi lo script in C:\Scripts\MiScript.ps1È possibile avviarlo da PowerShell nel seguente modo:

& "C:\Scripts\MiScript.ps1"

Per far sì che tutto ciò si integri con l'automazione, dovrai pensare a come verrà eseguito quello script a intervalli regolari senza utilizzare i privilegi di amministratore, un aspetto che vedremo più avanti con l'Utilità di pianificazione.

Automatizza con Utilità di pianificazione di Windows e PowerShell

pianificatore di attività e PowerShell

L'Utilità di pianificazione di Windows è lo strumento che consente di avviare automaticamente script PowerShell in base a pianificazioni, eventi o condizioni di sistema. Sebbene molte guide la utilizzino per attività con privilegi di amministratore, è perfettamente adatta anche all'automazione in un contesto utente standard, a condizione che l'attività sia configurata con l'account appropriato.

La libreria Utilità di pianificazione organizza tutte le attività in cartelle e, per ciascuna di esse, offre diverse schede principali:

  • GeneralNome, descrizione, account con cui viene eseguito e opzioni di sicurezza (ad esempio, se viene eseguito anche se l'utente non è connesso).
  • Fattori scatenanti: determina quando viene avviata l'attività: all'accesso, all'accensione del computer, ogni giorno, a un orario specifico, al verificarsi di un evento, ecc.
  • Azioni: definisce cosa fa l'attività quando viene attivata, di solito avviando un programma, che in questo caso sarà powershell.exe con le argomentazioni appropriate.
  • CondizioniConsente di configurare con precisione quando eseguirlo: solo se il computer è collegato, se rimane inattivo per un certo periodo, se la rete soddisfa determinate caratteristiche, ecc.
  • Impostazioni: impostazioni aggiuntive come consentire l'esecuzione su richiesta, i tentativi in ​​caso di errore, l'arresto se impiega troppo tempo, il comportamento se è già in esecuzione, ecc.
  • StoriaRegistra le esecuzioni, gli errori e gli avvisi, risultando molto utile per il debug quando qualcosa non funziona come dovrebbe.

Per avviare uno script PowerShell da Utilità di pianificazione, il modello tipico nella scheda Azioni è il seguente:

  • Programma / script: powershell.exe
  • Aggiungere argomentiQualcosa del genere -File C:\Scripts\MiScript.ps1aggiungendo ulteriori parametri se necessario, come ad esempio -ExecutionPolicy Bypass o -NoExit secondo le tue esigenze.
  • Inizia da: facoltativo, directory in cui si trova lo script se si utilizzano percorsi relativi.

Utilizzando l'account utente standard come account di esecuzione dell'attività (nella scheda Generale), lo script verrà eseguito con le stesse autorizzazioni di cui si dispone al momento dell'accesso, il che si allinea perfettamente con il principio di automatizzare senza essere un amministratore. Tuttavia, se lo script deve accedere a parti del sistema riservate agli amministratori, non andrà a buon fine; pertanto, è fondamentale progettare ogni attività tenendo conto del contesto di sicurezza disponibile.

  Come unire le partizioni con EaseUS Partition Master, passo dopo passo

Vantaggi dell'automazione con Utilità di pianificazione e PowerShell

La combinazione di Utilità di pianificazione con gli script PowerShell offre una serie di vantaggi interessanti, anche senza privilegi elevati. Alcuni dei principali vantaggi includono:

  • Risparmio di tempoLe attività ripetitive come la pulizia, la creazione di report o l'esportazione dei dati vengono eseguite automaticamente mentre si sta svolgendo un'altra attività o persino a sessione chiusa (se l'attività è configurata in tal senso).
  • coerenzaLo script esegue sempre esattamente la stessa operazione, nello stesso ordine, senza commettere errori, riducendo così il margine di errore umano.
  • AffidabilitàÈ possibile programmare routine regolari (giornatali, settimanali, mensili) che mantengono il sistema o i dati in buone condizioni, anche senza intervento manuale.
  • L'efficienza delle risorseÈ facile programmare gli script per le ore non di punta, evitando così ripercussioni sulle prestazioni durante i periodi di picco.
  • Flessibilità: i trigger basati sul tempo, sull'accesso, sull'avvio del sistema o sugli eventi consentono automazioni altamente adattabili al tuo ambiente.
  • gestione degli erroriÈ possibile configurare i tentativi, registrare l'output di PowerShell, inviare e-mail o scrivere eventi specifici quando qualcosa non va.
  • SicurezzaEseguendo gli script con account utente con privilegi limitati, si riduce il rischio che un errore dello script causi gravi danni al sistema. Utilizzare attività con autorizzazioni più ampie solo quando strettamente necessario.

Per l'automazione avanzata in reti di grandi dimensioni, PowerShell offre ancora più possibilità: con attività pianificate ben progettate è possibile concatenare flussi di lavoro complessi , orchestrare attività su macchine diverse e rispondere automaticamente a eventi specifici.

Esempi pratici di automazione con PowerShell

Una volta compreso il framework, ciò che fa davvero la differenza sono gli script specifici che si implementano . Ecco alcuni scenari comuni in cui PowerShell si rivela particolarmente efficace, sia nei singoli team che in ambienti più ampi.

Gestione di Microsoft 365 con PowerShell

Nell'ecosistema di Microsoft 365, PowerShell è diventato lo strumento di riferimento per la gestione in blocco di utenti, licenze e servizi . Con i moduli giusti, è possibile connettersi al proprio tenant e automatizzare una parte significativa delle attività quotidiane, come la migrazione dei profili utente e di Office . Per iniziare, in genere si utilizza il modulo MSOnline classico (anche se oggigiorno sono più comuni il modulo Microsoft Graph e il moderno modulo Exchange Online). Il flusso di lavoro di base sarebbe il seguente:

  1. Installa i moduli necessari (ad esempio, da una sessione PowerShell con le autorizzazioni per installare i moduli):
    Install-Module -Name PowerShellGet -Force -AllowClobber
    Install-Module -Name MSOnline
  2. Connettiti al servizio utilizzando le tue credenziali di amministratore di Microsoft 365:
    Connect-MsolService

Da lì, è possibile automatizzare attività come:

  • Registrazione di massa degli utenti da un file CSV, assegnazione di password e proprietà del profilo.
  • Modifiche nella composizione del gruppo in base a regole (ad esempio, spostando gli utenti in specifici gruppi di sicurezza).
  • Disattivazione automatica degli account inattivi in base a criteri quali la data dell'ultimo cambio di password o la data di accesso.
  • Generazione di report periodici riguardo all'attività degli utenti, alle licenze in uso o allo stato di sicurezza.

Questi script possono essere avviati manualmente da una console con le autorizzazioni appropriate in Microsoft 365 oppure integrati in attività pianificate su un server di gestione. Sebbene la gestione del tenant richieda un account con autorizzazioni elevate nel cloud, il computer da cui si esegue lo script non necessita necessariamente di un account amministratore locale , purché possa installare moduli e connettersi ai servizi remoti.

Automazione della manutenzione locale

Sui computer Windows convenzionali, anche con un account standard, è possibile creare script per:

  • Eseguire il backup delle cartelle utente attraverso copie e sincronizzazione su un'altra unità o su una posizione di rete a cui si ha accesso.
  • Pulizia dei file temporanei e dei software superflui. nei percorsi del profilo, nelle cache delle applicazioni o nei registri che non richiedono autorizzazioni di amministratore.
  • Registra l'utilizzo del disco, della CPU o della memoria Dal punto di vista del tuo account, la generazione di report avviene in una directory in cui puoi scrivere.
  • Rivedere i processi interni o servizi utente che non richiedono privilegi elevati per verificarne lo stato.

Questi script, combinati con l'Utilità di pianificazione in esecuzione con il tuo account utente, ti consentono di impostare una routine di manutenzione e monitoraggio di base molto utile anche quando il reparto IT non ti concede l'accesso di amministratore.

Automazione remota con Splashtop e altri sistemi

Negli ambienti di lavoro da remoto, strumenti come Splashtop aggiungono un ulteriore livello di interesse. Queste soluzioni offrono un accesso remoto sicuro ai computer e, in alcuni casi, funzionalità specifiche per:

  • varo prompt dei comandi o console PowerShell remote senza dover avviare una sessione desktop completa.
  • Esegui script PowerShell su più endpoint contemporaneamente, con controlli di audit e pianificazione centralizzata.
  • Applicare criteri, distribuire patch o script di correzione a gruppi di computer in modalità automatica.
  Guida definitiva all'apertura di CMD o Prompt dei comandi in Windows 11

Splashtop AEM, ad esempio, è specificamente progettato per gestire e automatizzare le attività su grandi flotte di dispositivi , integrando perfettamente l'esecuzione di script PowerShell all'interno della sua piattaforma. A seconda della configurazione, è possibile sfruttare queste funzionalità anche se l'account locale non dispone dei privilegi di amministratore, delegando parte del controllo al sistema di gestione remota.

Script PowerShell per IIS, database e Web Deploy

Sui server che ospitano applicazioni web su IIS, Web Deploy versione 2.1 include una serie di script PowerShell che semplificano notevolmente la preparazione dei siti per la distribuzione tramite Web Deploy . Sebbene per la configurazione iniziale siano generalmente necessari i privilegi di amministratore del server, è utile familiarizzare con questi script perché sono parte integrante di molte infrastrutture di distribuzione automatizzate.

Gli script principali sono:

  • SetupSiteForPublish.ps1: crea o configura un sito IIS, un utente di distribuzione non amministratore e un file di profilo di pubblicazione (.publishsettings).
  • CreaSqlDatabase.ps1: crea un database SQL Server, un login e un utente con autorizzazioni db_owner e aggiunge la stringa di connessione al file di pubblicazione.
  • CreaMySqlDatabase.ps1: fa la stessa cosa ma per MySQL, creando un database e un utente con i relativi permessi.
  • AggiungiRegoleDelegazione.ps1Configura le regole di delega in IIS per consentire a Web Deploy di funzionare correttamente negli ambienti delegati.

Lo script SetupSiteForPublish , ad esempio, può montare istantaneamente un sito chiamato WDeploySite su una porta disponibile (tra 8080 e 8200), creare un pool di applicazioni associato e generare un utente locale non amministratore (WDeploySiteuser) con autorizzazioni sulla directory fisica del sito e le autorizzazioni necessarie in IIS. Tutte le informazioni vengono salvate in un file .publishsettings che può essere utilizzato da strumenti come WebMatrix o Visual Studio.

Gli script di database aggiungono stringhe di connessione a SQL Server o MySQL a questo profilo , creando anche login e utenti specifici con password (che possono essere generate automaticamente o definite manualmente nella chiamata dello script). Sebbene questi strumenti siano stati progettati pensando a implementazioni con privilegi elevati, la loro filosofia si allinea all'idea di concedere a ciascuna applicazione e processo l'accesso minimo necessario , separando chiaramente gli account amministrativi da quelli di pubblicazione.

Le migliori pratiche per la sicurezza e le prestazioni negli script PowerShell

Qualsiasi strategia di automazione, soprattutto se implementata senza privilegi di amministratore, deve basarsi su una serie di buone pratiche di sicurezza e prestazioni per evitare problemi a medio termine.

Ecco alcuni suggerimenti fondamentali:

  • Progettare script utilizzando il principio del minimo privilegioche ogni script acceda solo alle risorse strettamente necessarie e che l'account che lo esegue (utente standard, account di servizio, ecc.) disponga solo delle autorizzazioni essenziali.
  • Firma di script sensibili e utilizzare politiche di esecuzione che richiedano la firma almeno per gli script scaricati da Internet o condivisi sulla rete aziendale.
  • Proteggi le credenziali e le informazioni sensibili.evitando di memorizzarli in chiaro all'interno degli script e ricorrendo a una memorizzazione sicura, a variabili d'ambiente crittografate o a soluzioni per sincronizzare e crittografare le copie nel cloud quando applicabile.
  • Implementare una gestione degli errori robustaUtilizza blocchi try/catch, registra gli errori e, se possibile, invia avvisi quando si verifica un errore critico.
  • Ottimizza le prestazioni: riutilizzare funzioni e moduli, ridurre al minimo i cicli non necessari, utilizzare cmdlet nativi ove possibile e testare diversi approcci per ridurre i tempi di esecuzione.
  • Monitorare e verificare le attività programmate: Esaminare periodicamente la cronologia di Utilità di pianificazione, i registri eventi e i file di registro generati dagli script per rilevare comportamenti anomali o errori ricorrenti.
  • Eseguire sempre i test in ambienti di sviluppo o di test. prima di implementare una nuova attività o uno script in produzione, soprattutto se interagisce con sistemi critici o dati sensibili.

Tenendo conto di tutto ciò, è possibile costruire un ecosistema di automazione PowerShell altamente efficiente, supportato da attività pianificate e strumenti remoti, in cui solo una piccola parte dell'infrastruttura richiede account con privilegi elevati , mentre il resto opera con utenti di servizio standard o con privilegi molto limitati. Pianificando attentamente i contesti di esecuzione, la progettazione degli script e la gestione delle autorizzazioni, è perfettamente possibile automatizzare gran parte del lavoro quotidiano in Windows e Microsoft 365 senza dover dipendere costantemente dall'account amministratore.

Disinstallare le applicazioni preinstallate (Bloatware) tramite PowerShell
Articolo correlato:
Come disinstallare app preinstallate e bloatware utilizzando PowerShell in Windows 10 e 11