PowerShell VS CMD: qual è la differenza

Il prompt dei comandi è la tradizionale shell della riga di comando in Windows. Forniva un modo per comunicare direttamente con un’app o il sistema operativo tramite la CLI, automatizzare le operazioni con file batch ( .bat ) ed eseguire script.

PowerShell, che è attualmente la shell della riga di comando predefinita, si estende su questi e fornisce funzionalità di automazione ancora più robuste. È un linguaggio di scripting in sé con il proprio ISE e il supporto anche per i comandi cmd e bash.

Dal momento che entrambi hanno scopi simili, potresti chiederti, sono davvero così diversi? CMD è solo una versione più semplice di PowerShell? PowerShell sostituirà il prompt dei comandi in futuro? Abbiamo risposto a queste e ad altre domande simili nell’articolo qui sotto.

Se volete continuare a leggere questo post su "[page_title]" cliccate sul pulsante "Mostra tutti" e potrete leggere il resto del contenuto gratuitamente. ebstomasborba.pt è un sito specializzato in Tecnologia, Notizie, Giochi e molti altri argomenti che potrebbero interessarvi. Se desiderate leggere altre informazioni simili a [page_title], continuate a navigare sul web e iscrivetevi alle notifiche del blog per non perdere le ultime novità.

Seguir leyendo


Sommario

Cos’è il prompt dei comandi?

Ai tempi di MS-DOS, gli utenti dovevano immettere i comandi interamente tramite l’interfaccia della riga di comando (CLI) per utilizzare i computer. Con il tempo e l’innovazione, MS-DOS è stato sostituito da sistemi operativi basati su GUI. Ma una parte della CLI si è bloccata sotto forma di prompt dei comandi, che è stato rilasciato per la prima volta nel 1987.

Il prompt dei comandi, chiamato anche CMD, è l’interprete della riga di comando nella linea dei sistemi operativi Windows NT. Interagisce con l’utente tramite una CLI, implementata tramite la console Win32.

CMD accetta gli input (comandi) dell’utente e li traduce (interpreta) in una forma comprensibile dal computer (linguaggio macchina). I comandi CMD sono preimpostati e ciascuno esegue un determinato compito.

Questi comandi possono essere utilizzati per scopi semplici (come il controllo del ping o dell’indirizzo IP) per cose avanzate come la creazione di file batch e script per automatizzare le attività di amministrazione del sistema (installazione di software, backup di server o disconnessione degli utenti su PC su una rete di grandi dimensioni, ad esempio).

L’esecuzione di attività tramite CMD è generalmente più veloce ed efficiente della GUI, in particolare quelle che possono essere eseguite eseguendo batch di comandi. Poiché i tuoi comandi e script sono archiviati in un file di testo, non solo i tuoi comandi sono ripetibili, ma sono anche controllabili, il che è un altro grande vantaggio.

È possibile accedere al prompt dei comandi con il comando run cmd .

Che cos’è PowerShell?

PowerShell è una shell della riga di comando multipiattaforma, un linguaggio di scripting e un framework di automazione, tutto in uno. Basato sul nuovo framework .NET Core, PowerShell è stato tradizionalmente utilizzato dagli amministratori di sistema.

Al giorno d’oggi, è sempre più popolare tra DevOps, Cloud Ops e sviluppatori grazie a funzionalità come il concatenamento della pipeline, il completamento delle schede/la previsione dei comandi, gli alias, la cronologia della riga di comando, le unità PowerShell, la comunicazione remota PowerShell e altro ancora.

PowerShell viene comunemente utilizzato per attività di gestione e amministrazione automatiche del sistema, gestione del cloud, creazione, test e distribuzione di soluzioni in ambienti CI/CD e così via. Può funzionare con tecnologie come Azure, SQL, Exchange, AWS, Google Cloud, VMWare e altro ancora.

PowerShell utilizza comandi leggeri univoci noti come cmdlet (pronunciato command-let). Oltre ai cmdlet nativi, PowerShell supporta anche i comandi CMD e Bash sotto forma di alias. Oh, e puoi anche creare i tuoi cmdlet, moduli e funzioni personalizzati.

Come shell della riga di comando predefinita, è possibile accedere a PowerShell dal menu Power User (Windows + X). Naturalmente, anche il comando run powershell funziona bene.

PowerShell VS CMD: le principali differenze

Sebbene PowerShell e CMD possano sembrare simili a prima vista, sono completamente diversi l’uno dall’altro, dai comandi e dalla struttura del linguaggio all’ambiente e alle funzionalità di scripting. Ecco le principali differenze tra PowerShell e Prompt dei comandi.

Comandi

I cmdlet di PowerShell differiscono dai comandi CMD nel senso che sono istanze di classi .NET anziché eseguibili autonomi.

PowerShell supporta la creazione di cmdlet nuovi e personalizzati, che possono essere creati da poche righe di codice mentre CMD no.

PowerShell supporta anche i comandi CMD e i comandi Bash sotto forma di alias, mentre lo stesso non si può dire per il prompt dei comandi.

Inoltre, PowerShell dispone anche di cmdlet nativi per lavorare con Strumentazione gestione Windows (WMI) su computer locali e remoti, mentre CMD no.

Struttura linguistica

CMD ha molti semplici comandi batch che ricordano MS-DOS, come cd o dir . Questi possono essere difficili da capire/ricordare se non hai molta esperienza con loro.

D’altra parte, i cmdlet di PowerShell sono molto più facili da apprendere e interpretare grazie alla struttura del linguaggio. I cmdlet di PowerShell in genere seguono un formato Verb-Noun o talvolta Verb-ModuleNoun.

Il verbo indica il tipo di azione che stai tentando di eseguire. I verbi comunemente usati includono Get (ottenere i dettagli di qualcosa), Set (cambiare lo stato o le impostazioni di qualcosa), New (creare un nuovo elemento) e Remove (eliminare un elemento esistente). È possibile ottenere un elenco completo di tutti i possibili verbi con il cmdlet Get-Verb .

Modulo indica quale modulo contiene il comando, mentre Sostantivo indica su quale tipo di oggetto stai lavorando.

Con un formato coerente come questo, è possibile fare un’ipotesi plausibile in molte situazioni, il che rende il processo di apprendimento molto più semplice rispetto al prompt dei comandi.

Pipe, oggetti e variabili

Una pipeline viene utilizzata per eseguire più comandi in sequenza, in cui l’output di un comando viene utilizzato direttamente come input per il comando successivo. Il concetto di pipeline non è esclusivo di PowerShell.

Ciò che è unico è che in PowerShell gli oggetti vengono utilizzati per recuperare e restituire dati, mentre, nel prompt dei comandi, gli input e gli output sono semplici stringhe. Ciò rende PowerShell più efficiente e in grado di elaborare dati complessi allo stesso modo dei linguaggi di programmazione, cosa che CMD non è in grado di fare.

In CMD, devi passare le variabili nei comandi in un ordine rigoroso poiché il numero di variabili è limitato. Non ci sono tali limitazioni in PowerShell.

Sistema di aiuto

In PowerShell, Get-Help e Get-Command sono comunemente usati per capire i comandi e ottenere informazioni aggiuntive. Il sistema della guida in PowerShell è inoltre integrato con gli articoli della guida in linea.

L’utilizzo di Get-Help fornisce informazioni su come utilizzare questo cmdlet. Se usi get-help ip , ottieni un elenco di tutte le funzioni, i cmdlet e gli alias relativi all’IP. Se usi get-help set-netipaddress , visualizza solo le informazioni relative a quella specifica funzione.

Allo stesso modo, l’utilizzo Get-Command visualizza un elenco completo di tutti i comandi installati sul computer. Puoi modificarlo con vari parametri come Get-Command -Type Cmdlet per esempio.

Nel caso di CMD, il comando help visualizza un elenco di comandi di sistema disponibili. Digitando help dir , ad esempio, vengono invece fornite informazioni dettagliate sul comando dir. Ma questo non funziona con tutti i comandi, nel qual caso puoi invece usare /? in quanto ha lo stesso scopo. Ad esempio, ping /? visualizza informazioni sul comando ping.

Ambiente e script

Il prompt dei comandi è molto limitato in quanto è possibile eseguire solo comandi DOS di base che non hanno accesso a molte funzionalità di gestione del sistema.

In CMD, dovresti scrivere uno script in un blocco note, salvarlo come file batch ed eseguirlo separatamente, mentre questo può essere richiamato direttamente in PowerShell. In tale nota, gli script CMD vengono salvati come file .bat , mentre gli script PowerShell vengono salvati come file .ps1 .

CMD non ha nemmeno un ISE (Integrated Scripting Environment), il che significa che semplicemente non può eguagliare la capacità di PowerShell di creare script complessi.

PowerShell ha accesso in profondità al sistema Windows e può interagire con gli oggetti di sistema a livello di base. Inoltre, ISE di PowerShell consente di scrivere, eseguire, testare ed eseguire il debug di comandi, alias e script.

Alcune altre funzionalità chiave di PowerShell ISE includono la modifica multilinea, l’esecuzione selettiva, la guida sensibile al contesto, il completamento tramite tabulazione, la colorazione della sintassi, il supporto per le lingue da destra a sinistra e la personalizzazione dell’aspetto, tra le altre.

Verdetto finale: PowerShell VS CMD

Per riassumere, ecco le principali differenze tra PowerShell e CMD:

PowerShell cmd
Powershell usa oggetti di programmazione autonomi chiamati cmdlet che seguono un formato verbo-sostantivo coerente. I comandi CMD non seguono un formato coerente.
Supporta anche gli alias e la creazione di cmdlet personalizzati. CMD non supporta alias o la creazione di nuovi comandi.
Powershell supporta i comandi Bash e quindi i sistemi Linux. CMD non supporta i sistemi Linux.
Puoi reindirizzare gli output come oggetti in Powershell. L’output di un comando in CMD è una stringa e non è possibile reindirizzarla a un altro comando.
Powershell ha un ISE. CMD non ha ISE.
Powershell ha accesso alle librerie di programmazione. CMD non ha accesso alle librerie di programmazione.

Per l’utente medio, il motivo per cui utilizzi la riga di comando per la maggior parte del tempo è probabile che controlli il tuo ping o IP. Il prompt dei comandi è uno strumento perfetto per questo scopo.

O forse sei un utente più anziano esperto in CMD e non disposto a lasciarlo andare ancora. CMD non se ne andrà presto, quindi se sta facendo il lavoro per te, va bene lo stesso.

Ma non si può negare che PowerShell sia superiore a CMD in quasi tutti i parametri. PowerShell è estensibile, concatenabile e offre molte più funzionalità.

L’introduzione di PowerShell ha eliminato le seccature che gli amministratori di sistema erano soliti affrontare: pettinare e navigare manualmente nelle directory di Windows per individuare i cmdlet al fine di automatizzare le attività di amministrazione, in particolare backup, ripristino, aggiornamento e cron-job relativi alla manutenzione.

Il prompt dei comandi semplicemente non può eguagliare le capacità di amministrazione e automazione del sistema di PowerShell. Questo è ovvio sia per la maggior parte degli utenti esperti che per gli amministratori di sistema, motivo per cui Microsoft proverà probabilmente a sostituire cmd con PowerShell alla fine. Dopotutto, PowerShell può fare la maggior parte di ciò che CMD può fare e molto altro.

Confronto dei comandi più utili

La maggior parte degli utenti ha riscontrato uno o due errori che hanno richiesto loro di utilizzare gli strumenti della riga di comando per risolvere il problema. L’utilizzo di PowerShell o cmd all’inizio può sembrare scoraggiante, ma confidiamo che la tabella seguente sia utile in questi casi. In esso, abbiamo compilato alcuni dei più utili cmdlet e comandi cmd di PowerShell e descritto brevemente la loro funzione.

Descrizione del comando Cmdlet di PowerShell Comando CMD
Visualizza l’elenco degli elementi e degli elementi secondari in una posizione specificata Get-ChildItem dir
Ottiene il contenuto di un elemento Ottieni contenuto tipo
Elenca i comandi disponibili con una breve descrizione Ottieni-comando aiuto
Visualizza informazioni dettagliate sul comando specificato Ottenere aiuto /?
Visualizza la posizione di lavoro corrente Ottieni posizione CD
Cambia il percorso di lavoro corrente in uno specificato Imposta posizione cd, chdir
Elenca tutti i processi in esecuzione Get-processo elenco delle attività
Arresta un processo in esecuzione Processo di arresto uccidere taskkill
Copia gli elementi in un’altra posizione Copia-Articolo copia, xcopia
Sposta gli elementi in una nuova posizione Sposta oggetto mossa
Elimina un elemento Rimuovi oggetto del, cancellare
Rinomina un elemento Rinomina-elemento ren, rinominare
Restituisce l’indirizzo IP del sistema Get-NetIPAddress ipconfig
Riavvia il sistema locale Riavvia il computer spegnimento/r
Cancella lo schermo Clear-Host cls