Lo scripting dei file batch risale al momento in cui MS-DOS è stato rilasciato nel 1981 come sistema operativo per personal computer IBM. Fondamentalmente era un clone del CP / M della Digital Research, uno dei primissimi sistemi operativi per microcomputer. Microsoft lo ha fatto girare su PC IBM che fungevano sia da kernel che da shell insieme ad alcune funzionalità aggiuntive di altre shell. Microsoft ha rilasciato diverse versioni di DOS nel tempo, estendendo successivamente i file batch in molti modi. Poi arriva Windows che si è evoluto rapidamente da un'applicazione a un sistema operativo completo. Microsoft ha incluso un interprete della riga di comando chiamato "Prompt dei comandi" (o "cmd") nella sua linea di sistemi operativi Windows NT che utilizzava fondamentalmente gli stessi comandi di Command.com ma con funzionalità aggiuntive.
A differenza delle versioni precedenti che consentirebbero l'esecuzione di un file .BAT nel prompt di MS-DOS, questo interprete di riga di comando avanzato a 32 bit ha reso il linguaggio batch più utile grazie ai numerosi miglioramenti e alle funzionalità aggiuntive. Tuttavia, l'interprete della riga di comando non era in grado di fornire coerenza poiché non potevano essere utilizzati per automatizzare le funzionalità sfaccettate dell'interfaccia utente grafica. Non era abbastanza potente per soddisfare gli utenti esperti. Così, Microsoft iniziò a lavorare su un nuovo approccio alla gestione della riga di comando e alla fine rilasciò una nuova CLI migliorata chiamata "Monad" nel 2002. Riuscì a superare le carenze del suo predecessore. Entro il 2005, Microsoft ha già rilasciato tre versioni di Monad. Nel 2006, il nome è stato cambiato formalmente in "Windows PowerShell" che offre addio allo scripting dei file batch della vecchia scuola.
Command Prompt o cmd è l'interprete della riga di comando per i sistemi operativi Microsoft Windows utilizzato per automatizzare varie attività correlate al sistema utilizzando script e file batch. Spesso definito come cmd.exe, è un programma Windows che invia comandi al sistema come comandi di gestione dei file come copia, incolla ed elimina. Emula la maggior parte delle capacità della riga di comando disponibili in MS-DOS tramite un'interfaccia a riga di comando. È stato inizialmente rilasciato come interprete di riga di comando (CLI) per la famiglia di sistemi operativi Windows NT ed è stato sviluppato da Therese Stowell. CMD ha comandi incorporati per eseguire varie attività, la maggior parte delle quali può essere eseguita come amministratore. È possibile accedere al prompt dei comandi tramite il suo collegamento situato nel menu Start o tramite il comando cmd Run. È disponibile in quasi tutte le versioni di Windows.
PowerShell è una versione più avanzata del cmd utilizzato per eseguire programmi esterni come il ping o la copia e automatizzare molte diverse attività di amministrazione del sistema che non sono accessibili da cmd.exe. È abbastanza simile a cmd, tranne che è più potente e utilizza comandi diversi del tutto. È più di una semplice shell; è un ambiente di scripting progettato specificamente per gli amministratori di sistema per eseguire attività amministrative su più sistemi operativi. È uno strumento da riga di comando basato su attività e un linguaggio di scripting basato sul framework .Net. Richiama un insieme molto ricco di comandi nel contesto degli script di automazione chiamati "cmdlet" che abilitano l'amministrazione nei sistemi Windows. Sono anche facili da usare con la sintassi standardizzata che li rende facili da creare potenti script. È un interprete di riga di comando molto potente del Prompt dei comandi che può interpretare sia i comandi Batch sia i comandi di PowerShell.
Sia cmd che PowerShell sono potenti strumenti a linea di comando utilizzati per automatizzare le attività di amministrazione del sistema scrivendo un file script / batch. Tuttavia, cmd ha capacità di amministrazione limitate rispetto a PowerShell, che, d'altra parte, è un'implementazione della shell più avanzata e moderna con funzionalità e miglioramenti aggiuntivi. PowerShell è appositamente progettato per gli amministratori di sistema per controllare e automatizzare l'amministrazione dei sistemi Windows.
PowerShell viene utilizzato principalmente dagli amministratori di sistema per gestire la rete, nonché i sistemi e le applicazioni che fanno parte di tale rete. Può interpretare in modo efficiente sia il comando Batch che i comandi PowerShell, mentre cmd può interpretare solo i comandi Batch. Il prompt dei comandi fornisce un mezzo per interagire con il programma del computer con l'aiuto di comandi emessi dall'utente.
A differenza del Prompt dei comandi, che può solo filtrare flussi di testo, l'output generato da un cmdlet è più di un semplice flusso di testo; Conducono oggetti tra cmdlet che consente loro di condividere dati più complessi tra i cmdlet.
PowerShell utilizza funzioni molto più potenti chiamate "cmdlet" che costituiscono un ricco insieme di comandi per eseguire query più potenti con un output migliore di quello trovato nella riga di comando di Windows. Le funzioni di PowerShell sono molto più complicate e potenti del tradizionale prompt dei comandi e possono essere utilizzate molto bene con la sintassi standardizzata.
PowerShell è più di una semplice shell; è un potente ambiente di scripting basato sul framework .Net che può essere usato per eseguire script complessi per l'amministrazione del sistema Windows in modo più semplice ed efficiente rispetto a Command Prompt. Inoltre, PowerShell include numerosi miglioramenti e funzionalità aggiuntive che ne estendono l'utilizzo, migliorando la sua usabilità.
Sia PowerShell che Command Prompt sono strumenti da riga di comando basati su attività utilizzati per automatizzare rapidamente le attività di amministrazione del sistema, ma esistono differenze significative tra i due in termini di funzionalità e usabilità. CMD è una shell da riga di comando di base che introduce con la famiglia di sistemi operativi Windows NT con la stessa sintassi e funzionalità standardizzate di DOS. PowerShell, d'altra parte, è una shell da riga di comando basata su attività e un linguaggio di scripting basato sul framework .Net utilizzato per automatizzare l'elaborazione in batch e creare strumenti di gestione del sistema. A differenza di cmd, utilizza un ricco set di comandi chiamati cmdlet per eseguire attività di amministrazione del sistema.