Contattaci
Lasciaci i tuoi riferimenti, saremo felici di contattarti il prima possibile e organizzare una consulenza gratuita.
Introduzione a PowerShell
Che cos’è PowerShell
PowerShell è una soluzione di automazione attività multipiattaforma costituita da:
- Shell a riga di comando: permette di digitare direttamente nella shell comandi in modo interattivo, eseguirli e vederne i risultati.
- Linguaggio e framework di scripting: può essere utilizzato per creare script, eseguibili automaticamente o in richiamabili in modalità interattiva nella shell.
- Ecosistema di moduli: ha un robusto ecosistema di moduli che consente di utilizzare funzionalità e capacità sviluppate da terzi. Questi sono creati da Microsoft o da sviluppatori di terze parti e possono essere installati dalla PowerShellGallery o da altri repository online.
- Framework di automazione: consente l’utilizzo di Powershell anche dall’interno di altre applicazioni.NET (System.Management.Automation)
- Framework di gestione configurazione (via Powershell DSC- Desired State Configuration): consente l'automazione delle attività di gestione della configurazione degli ambienti Windows-based, come anche altre applicazioni e servizi (Active Directory, SQLServer, Azure, AWS, VMWAre, Exchange, SharePoint ecc.)
Per la gestione dei sistemi operativi viene utilizzato in combinazione con altri strumenti e tecnologie, come:
Storia di PowerShell
PowerShell è stato creato da un team di ingegneri di Microsoft, guidato da Jeffrey Snover, un ingegnere di sistemi senior di Microsoft.
Snover è stato il creatore del progetto originale di Windows PowerShell e ha continuato a dirigere lo sviluppo del prodotto durante tutto il suo ciclo di vita. Ha lavorato per Microsoft per molti anni e ha contribuito allo sviluppo di diversi prodotti e tecnologie, tra cui Active Directory, Windows Server e il sistema operativo Windows NT. Dopo l'uscita di PowerShell Snover ha continuato a lavorare allo sviluppo e alla diffusione della tecnologia: infatti ha lavorato alla creazione della versione cross-platform PowerShell Core. Attualmente è il Chief Technologist della Cloud+ AI Platform presso Microsoft.
Windows PowerShell è stato lanciato per la prima volta nel 2006 come una shell di Windows per automatizzare le attività amministrative. Inizialmente era basato su .NETFramework e utilizzava un linguaggio di scripting proprietario chiamato PowerShell Language. Con il tempo, Windows PowerShell ha continuato a evolversi, introducendo nuove funzionalità e miglioramenti per rendere più facile l'automazione delle attività amministrative su Windows.
Nel 2016, Microsoft ha annunciato PowerShell Core, una versione di PowerShell che è stata progettata per essere cross-platform e che utilizza .NET Core invece di .NET Framework. PowerShell Core è stato progettato per essere compatibile con le piattaforme Windows, macOS e Linux, consentendo agli amministratori di utilizzare lo stesso strumento su più sistemi operativi. Inoltre, PowerShell Core è stato progettato per essere compatibile con le versioni precedenti di Windows PowerShell, il che significa che gli script scritti per Windows PowerShell possono essere eseguiti su PowerShell Core senza modifiche.
Con l'aumento della popolarità dell'uso dei sistemi operativi Linux e macOS nei data center, PowerShell Core è diventato uno strumento sempre più importante per gli amministratori di sistema che devono gestire ambienti misti. Con la sua compatibilità cross-platform e la capacità di eseguire gli script di Windows PowerShell, PowerShell Core è diventato uno strumento potente per automatizzare le attività amministrative su più sistemi operativi.
Differenze tra Windows PowerShell e PowerShell Core
Windows PowerShell
- Nome binario: powershell.exe
- Closed-source
- Utilizza il .NET Framework
- Disponibile solo su sistemi operativi Windows
- Ha accesso a tutte le classi e le API .NET
- È preinstallato sui sistemi Windows
- Non supporta più versioni side-by-side sullo stesso Sistema
- Sviluppo script anche in WindowsPowershell ISE (deprecato)
PowerShell Core
- Binario: pwsh.exe
- Open-source
- Utilizza .NET Core / .NET 5+
- Cross-platform, quindi anche Linux e MacOS
- Ha accesso ad un sottoinsieme delle classi e delleAPI .NET disponibili in Windows PowerShell
- Deve essere installato manualmente
- Supporta più versioni side-by-side sullo stesso sistema
- Sviluppo script con Visual Studio Code, non supportato da Windows Powershell ISE
Sia Windows PowerShell che PowerShell Core supportano gli stessi comandi base e utilizzano la stessa sintassi.
Tuttavia, alcuni cmdlet e funzionalità potrebbero non essere disponibili in PowerShell Core a causa delle differenze tra .NET Framework e .NET Core / .NET 5+.
Supporto sistemi operativi
Concetti chiave di PowerShell
Cmdlet
I cmdlet (“piccoli comandi”) sono il cuore di PowerShell. Essi rappresentano i singoli comandi utilizzabili per eseguire attività.
Scritti in PowerShell stesso o in un qualsiasi altro linguaggio supportato da .NET (C#, VB.NET, F#..), forniscono una vasta gamma di funzionalità, dalla gestione dei file e delle cartelle alla configurazione delle impostazioni di sistema e alla gestione degli utenti e dei gruppi.
Pipelining
Il pipelining è una delle caratteristiche più potenti di PowerShell. Consente di collegare più cmdlet insieme per creare operazioni o script più complessi.
Ad esempio, un system administrator potrebbe creare un elenco di tutti gli utenti in un gruppo specifico e quindi “pipeare” (passare) il risultato ad un cmdlet per disabilitare l'account di tutti gli utenti in quell'elenco.
Object-oriented
PowerShell utilizza gli oggetti per rappresentare i dati e le risorse del sistema. Ciò significa che i dati restituiti da un cmdlet sono rappresentati come oggetti e possono essere utilizzati come input per altri cmdlet. Questo rende più facile recuperare, modificare e produrre dati.
Integrazione con .NET
Infine, PowerShell è integrato con .NET, il che significa che gli amministratori possono utilizzare le funzionalità e le classi di .NET Framework nei loro script di PowerShell. Ciò consente di estendere le funzionalità di PowerShell e di adattarle alle proprie esigenze.
Perché imparare ed usare PowerShell
Dal punto di vista di uno sviluppatore software
PowerShell è uno strumento molto potente per gli sviluppatori, in primis perché consente di automatizzare molte attività ripetitive e di gestire in modo efficiente le risorse di sistema.
Gli sviluppatori possono utilizzare PowerShell per automatizzare la configurazione di un ambiente di sviluppo, l'esecuzione dei test e la distribuzione del codice. Inoltre, PowerShell consente di gestire le risorse di Azure, AWS e altri servizi cloud, semplificando il processo di creazione e distribuzione delle applicazioni.
PowerShell è un linguaggio di scripting molto flessibile e potente, che consente di creare script complessi per automatizzare le attività amministrative e di gestione dei sistemi.
Basato su tecnologia .NET(Framework o successivi), consente agli sviluppatori di utilizzare le stesse librerie e le stesse funzionalità di .NET a loro familiari. Ciò lo rende uno strumento molto potente per chi già lavora con .NET, poiché consente loro di utilizzare le loro competenze esistenti per automatizzare le attività amministrative.
Dal punto di vista di un amministratore di sistemi
PowerShell è un potente strumento di amministrazione di sistemi per Windows e non solo, che consente agli amministratori di automatizzare molte attività ripetitive e di eseguire operazioni di amministrazione su più sistemi contemporaneamente.
Con PowerShell, gli amministratori possono scrivere script per automatizzare molte attività, come la creazione di utenti, la gestione dei gruppi e la configurazione delle impostazioni di sistema.
Inoltre, PowerShell offre un'interfaccia di riga di comando (CLI) avanzata che consente agli amministratori di eseguire rapidamente comandi complessi e di accedere alle funzionalità avanzate di Windows. Un amministratore di sistemi può creare script personalizzati per soddisfare le esigenze specifiche della propria organizzazione.
In sintesi, imparare PowerShell può aiutare gli amministratori a automatizzare le attività ripetitive, aumentare l'efficienza e migliorare la gestione dei sistemi da loro gestiti.