Comandi PowerShell: una panoramica dei 40 cmdlet più importanti

Grazie a un uso mirato dei comandi PowerShell puoi sfruttare al meglio i vari moduli. I vari cmdlet seguono una struttura logica e possono essere personalizzati con parametri opzionali. In questo articolo, ti presentiamo 40 comandi PowerShell essenziali per ottimizzare il lavoro all’interno del tuo sistema o della tua rete.

Cosa sono i comandi PowerShell?

PowerShell, che dalla versione di Windows 7 si trova già preinstallata sul sistema, è una shell per inserire i relativi comandi PowerShell su Windows. Oltre ai comandi cmd, esistono numerosi cmdlet che solo la PowerShell è in grado di interpretare. Questi sono composti da un verbo e da un sostantivo separati da un trattino. Inoltre, esistono parametri opzionali per specificare ulteriormente i comandi PowerShell. Tali parametri sono separati da uno spazio. Mentre in passato la PowerShell era impiegata soprattutto dagli amministratori di sistema, oggi questo strumento si rivela particolarmente utile anche nell’ambito dello sviluppo software. I comandi preinstallati sono centinaia. Di seguito ti presentiamo i più importanti.

I principali comandi PowerShell

I comandi PowerShell consentono di gestire con facilità complesse operazioni di amministrazione. Tra i cmdlet di base che potrebbero servirti più spesso troviamo comandi che forniscono una visione d’insieme della struttura di rete, che elencano altri comandi PowerShell, aiutano a impostare le configurazioni di sicurezza necessarie o generano analisi. In particolare, i principali comandi PowerShell sono:

1. Get-Module -All

Se vuoi ottenere una panoramica iniziale di tutti i moduli PowerShell importati puoi utilizzare il comando Get-Module -All.

Get-Module -All
shell

2. Get-Command

Esistono centinaia di comandi PowerShell predefiniti. Se hai bisogno di avere una panoramica dei comandi PowerShell a tua disposizione puoi utilizzare Get-Command. Il comando ti fornirà un elenco chiaro di tutte le azioni possibili e ti spiegherà brevemente a cosa serve ciascun cmdlet. Questo vale anche se hai installato moduli aggiuntivi.

Get-Command
shell

3. Get-Help

L’elenco generato da Get-Command ti fornisce una panoramica iniziale dei comandi a tua disposizione. Tuttavia, se hai bisogno di informazioni più dettagliate relative a un comando e alle possibilità che offre, puoi utilizzare il cmdlet Get-Help. Questo comando accede alle risorse del tuo PC e ti fornisce tutte le informazioni disponibili. Per attivare questa guida, combina Get-Help con il comando di cui desideri visualizzare la sintassi.

Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
shell

4. Get-Process

In molti casi può essere utile ottenere rapidamente una visione d’insieme di tutte le applicazioni, programmi e processi attivi sul sistema. Con il comando Get-Process è possibile generare facilmente tale panoramica. Se vicino a questo comando si specifica un’applicazione si riceveranno informazioni dettagliate su di essa.

Get-Process
shell

5. Get-Service

Il comando Get-Service opera in modo analogo al cmdlet Get-Process, ma a differenza di questo, Get-Service fornisce dettagli su tutti i servizi attualmente attivi. Se desideri ottenere informazioni solamente su un particolare servizio o su uno specifico tipo di servizi ti basterà specificare la richiesta.

Get-Service
shell

6. Stop-Process

In aggiunta puoi usare anche diversi comandi PowerShell per terminare i processi direttamente dalla shell. Ad esempio, con il comando Stop-Process, che ti consente di specificare il processo da terminare utilizzando il nome, l’ID o altri attributi. Il comando si scrive così:

Stop-Process -Name "nome del processo"
shell
Stop-Process -Id 3582 -Confirm -PassThru
shell

-Confirm richiede una conferma del comando. -PassThru, invece, richiede la conferma del processo interrotto, poiché questa non avviene automaticamente.

7. ConvertTo-HTML

Un layout chiaro può fare molto per aiutare a individuare rapidamente problemi o possibili complicazioni. Utilizzando il comando ConvertTo-HTML, puoi convertire l’output dei comandi PowerShell in un file HTML, rendendo tutte le informazioni facilmente leggibili in un formato a colonne. Il comando si scrive in questo modo:

Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
shell

8. ConvertTo-Xml

Puoi seguire un approccio simile se hai bisogno di una rappresentazione XML di un oggetto specifico. In questo caso, puoi utilizzare il comando ConvertTo-Xml. Nel seguente esempio la data corrente viene convertita in formato XML:

Get-Date | ConvertTo-Xml
shell

9. Where-Object

Per filtrare i risultati di un cmdlet puoi usare il comando Where-Object. Quando esegui un comando, spesso l’output contiene numerosi oggetti di cui hai solo parzialmente bisogno. Where-Object si serve di una pipe per deviare l’output e visualizzare soltanto le informazioni desiderate. Per esempio, se desideri visualizzare solo i servizi creati o aggiornati durante l’anno corrente, puoi procedere nel modo seguente:

Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
shell

10. Get-History

Se vuoi ottenere un elenco di tutti i comandi PowerShell usati durante una sessione, puoi usare il cmdlet Get-History. Per elencare tutti i comandi di PowerShell digita:

Get-History
shell

Aggiungendo questa specificazione richiami solo gli ultimi dieci comandi PowerShell:

Get-History -Count 10
shell

11. Clear-History

Naturalmente puoi cancellare anche l’elenco dei comandi PowerShell utilizzati. Per rimuovere tutte le voci, puoi utilizzare il cmdlet Clear-History:

Clear-History
shell

Se desideri eliminare solo alcuni comandi PowerShell, puoi farlo aggiungendo i parametri appropriati. Ad esempio, la seguente istruzione rimuove tutti i comandi PowerShell che contengono la parola “Help” o terminano con “Syntax”:

Clear-History -Command *Help*, *Syntax
shell

12. Add-History

È anche possibile aggiungere comandi PowerShell a una sessione per poterli poi richiamare direttamente nella sessione successiva. Il cmdlet da usare in questo caso è Add-History.

Add-History
shell

13. Out-File

Se desideri salvare l’output dei comandi PowerShell sul tuo computer, puoi utilizzare il cmdlet Out-File. Questo comando salva i risultati dei comandi PowerShell in un documento di testo standard al percorso indicato.

Get-Process | Out-File -FilePath .\Process.txt
shell

14. Copy-Item

In PowerShell puoi copiare elementi e salvarli in un luogo diverso utilizzando il comando Copy-Item. A tal proposito devi specificare anche la directory in cui desideri salvare la copia. Il comando funziona così:

Copy-Item "C:\Cartella1\file.txt" -Destination "C:\Cartella2"
shell

15. Get-ChildItem

Puoi utilizzare il comando Get-ChildItem per recuperare determinati elementi da una o più posizioni. Se ci sono elementi subordinati questi verranno inclusi nell’elenco. Normalmente questo comando fornisce informazioni sugli attributi, l’ora dell’ultima modifica, la dimensione del file e il nome dell’elemento. Se invece la posizione risulta vuota, non ci sarà alcun output.

Get-ChildItem -Path C:\Esempio
shell

Gli attributi sono elencati alla voce “Mode”. Alcune proprietà comuni sono:

  • a (archivio)
  • d (directory)
  • h (nascosto)
  • l (link)
  • r (solo lettura)
  • s (sistema)

16. Set-AuthenticodeSignature

Per proteggere i file puoi dotarli di una firma Authenticode servendoti del comando Set-AuthenticodeSignature. Ma attenzione: questo processo funziona solo con i file che supportano il Subject Interface Package (SIP).

$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
shell

17. Invoke-Item

Se desideri eseguire un’azione predefinita per un file specifico, puoi farlo con il comando Invoke-Item. Questo comando garantisce, ad esempio, che un file eseguibile venga avviato o che un documento di testo venga aperto con il programma configurato. Qui di seguito il file viene aperto con Microsoft Word per impostazione predefinita:

Invoke-Item "C:\Test\Esempio.doc"
shell

18. Start-Job

Con il comando Start-Job puoi eseguire un’attività in background sul tuo PC locale. In questo modo puoi eseguire un comando specifico senza che questo interferisca direttamente con la sessione corrente.

Start-Job -ScriptBlock { Get-Process -Name pwsh }
shell
Server dedicati
Performance e innovazione
  • Hardware dedicato al 100%
  • Fatturazione al minuto
  • Potenziato dai processori Intel® Xeon® e AMD

Comandi PowerShell per eseguire azioni specifiche

I comandi PowerShell menzionati qui sopra servono principalmente a ottenere una visione d’insieme di processi o oggetti. Allo stesso tempo, però, esistono cmdlet che consentono una vasta gamma di azioni per utilizzare il sistema in modo più produttivo. Di seguito ti elenchiamo vari comandi PowerShell che potrebbero semplificarti il lavoro.

19. Clear-Content

Se vuoi eliminare il contenuto di un elemento, ma allo stesso tempo mantenere l’elemento in sé, puoi farlo usando il comando Clear-Content. Con questo cmdlet puoi rimuovere, ad esempio, il testo da un documento, senza però cancellare il file. Il comando si presenta così:

Clear-Content C:\Temp\Esempio.txt
shell

20. ForEach-Object

Il comando ForEach-Object consente di eseguire un’operazione su ciascun elemento in un insieme di oggetti specificati nell’input. In questo esempio dividiamo per 10 tre numeri interi presenti in un array:

10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
shell

21. Compare-Object

Il cmdlet Compare-Object è utile quando non si vogliono confrontare manualmente differenti insiemi di oggetti. Questo comando genera un rapporto che mostra le differenze tra i record. Il primo record è utilizzato come componente di riferimento, mentre il secondo funge da componente di confronto. È possibile specificare gli attributi da confrontare, ma se questa informazione viene omessa verranno comparati solo i risultati delle stringhe. L’output è diviso in proprietà che compaiono solo nel componente di riferimento (<==) e proprietà che appaiono solo nel componente di confronto (==>). In questo esempio, il file “Documento1.txt” contiene i valori Berlino, Londra e Parigi, mentre “Documento2.txt” contiene Berlino, Vienna e Amsterdam.

Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Documento1.txt) -DifferenceObject (Get-Content -Path C:\Test\Documento2.txt)
InputObject	SideIndicator
---------------	-----------------
Vienna		==>
Amsterdam	==>
Londra		<==
Parigi		<==
shell

I contenuti che compaiono in entrambi i documenti (in questo caso “Berlino”) non vengono mostrati.

22. New-Object

Uno dei comandi PowerShell più utili è New-Object. Puoi utilizzare questo cmdlet per creare l’istanza di un oggetto in un framework .NET o di un Component Object Model (COM). Ad esempio, se desideri creare un oggetto System.Version con la stringa 1.2.3.4 come costruttore, il comando apparirà nel seguente modo:

New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
shell

23. Select-Object

Puoi utilizzare il comando Select-Object per selezionare un oggetto o un gruppo di oggetti con proprietà precedentemente specificate. A tal proposito puoi stabilire i seguenti parametri:

  • First
  • Last
  • Unique
  • Skip
  • Index

Nell’esempio qui sotto utilizziamo i comandi PowerShell Get-Process e Sort-Object per visualizzare i tre processi con il maggiore consumo di memoria al momento dell’input.

Get-Process | Sort-Object -Property WS | Select-Object -Last 3
shell

24. Set-Alias

Le scorciatoie da tastiera di Windows sono adatte a eseguire determinate operazioni con maggiore rapidità. Anche PowerShell offre questa opzione. Nel sistema puoi utilizzare il cmdlet Set-Alias per definire abbreviazioni dei vari comandi PowerShell. Nell’esempio seguente creiamo l’alias “ci” per il comando Get-ChildItem:

PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
shell

25. Set-Location

Se desideri modificare la posizione in cui salvare il tuo lavoro, puoi utilizzare il comando Set-Location. Puoi specificare nuove posizioni quali directory, sottodirectory, posizioni del registro o percorsi di provider. Di seguito impostiamo l’unità C: come posizione di lavoro corrente:

PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
shell

26. Set-Service

Puoi utilizzare il cmdlet Set-Service per interagire con un servizio, ovvero avviarlo, terminarlo, metterlo in pausa o modificarne le proprietà. Nell’esempio qui sotto modifichiamo il nome di un servizio da “New Workstation” a “Old Workstation”:

Set-Service -Name New Workstation -DisplayName "Old Workstation"
shell

27. Set-TimeZone

Se desideri modificare il fuso orario del tuo sistema, puoi farlo usando il comando Set-TimeZone. Se come nuovo fuso orario desideri impostare il Coordinated Universal Time (UTC), dovrai digitare quanto segue:

Set-TimeZone -Id "UTC"
shell

28. Restart-Computer

Se desideri riavviare il sistema operativo su un PC locale o un PC remoto, puoi usare il relativo comando PowerShell Restart-Computer.

Il comando per il computer locale è:

Restart-Computer
shell

Invece, per altri computer nella rete devi scrivere:

Restart-Computer -ComputerName Server01, Server03
shell

29. Restart-Service

Il cmdlet più indicato per arrestare e riavviare un servizio usando i comandi PowerShell è Restart-Service. Ad esempio, puoi riavviare tutti i servizi il cui nome inizia con “Net” utilizzando il seguente comando PowerShell:

PS C:\> Restart-Service -DisplayName "net*"
shell

30. Clear-RecycleBin

È importante svuotare il cestino regolarmente per liberare spazio sul disco. Puoi farlo anche tramite la PowerShell, utilizzando il comando Clear-RecycleBin.

Clear-RecycleBin
shell

31. Get-ComputerInfo

Il comando Get-ComputerInfo serve a ottenere informazioni sul sistema operativo e sulle sue proprietà.

Get-ComputerInfo
shell

32. Move-Item

Esistono diversi comandi PowerShell per spostare elementi da una posizione all’altra, ma l’opzione più comune è Move-Item. Nell’esempio di seguito spostiamo il file vecchio.txt dall’unità C: alla directory D:\Temp e lo rinominiamo nuovo.txt.

Move-Item -Path C:\vecchio.txt -Destination D:\Temp\nuovo.txt
shell

Monitoraggio e debug con i comandi PowerShell

Anche i comandi PowerShell che consentono di monitorare e controllare il sistema sono particolarmente utili, specialmente se desideri testare una nuova rete e valutarne le prestazioni in condizioni reali. Di seguito trovi una lista di comandi PowerShell che potrebbero servirti in questa situazione.

33. Debug-Process

Il debugging è un passaggio fondamentale per assicurarsi che tutte le impostazioni e i processi funzionino senza errori. Prima di procedere però, è necessario scaricare e configurare i debugger appropriati. Una volta completata questa operazione, è possibile utilizzare il comando Debug-Process. In questo esempio utilizziamo un debugger per Explorer:

PS C:\> Debug-Process -Name "Explorer"
shell

Per eseguire il debug di più processi contemporaneamente, puoi semplicemente elencarli di seguito, separandoli con una virgola.

34. Enable-PSBreakpoint

Per attivare specifici breakpoint, puoi utilizzare il comando Enable-PSBreakpoint. In questo modo, da un punto di vista tecnico il valore del cmdlet verrà impostato su “true”. Di seguito ti mostriamo come puoi usare questi comandi PowerShell per attivare tutti i breakpoint nella sessione corrente:

Get-PSBreakpoint | Enable-PSBreakpoint
shell

Questo comando serve ad attivare tutti i breakpoint tramite il loro ID:

Enable-PSBreakpoint -ID 0, 3, 4
shell

35. Disable-PSBreakpoint

Se desideri disattivare nuovamente i breakpoint di PowerShell, puoi farlo utilizzando il cmdlet Disable-PSBreakpoint. Tecnicamente parlando, imposterai il valore del comando Enable-PSBreakpoint su “false”. Per disattivare un breakpoint con l’ID 0, puoi digitare quanto segue:

Disable-PSBreakpoint -Id 0
shell

36. Get-Counter

Se il tuo dispositivo usa Windows, con il comando Get-Counter di PowerShell puoi ricavare dati relativi alle prestazioni del sistema operativo. Questo comando può essere utilizzato sia per il computer locale che per i computer remoti. In questo esempio si visualizzano dati dal computer locale:

Get-Counter -ListSet *
shell

37. Start-Sleep

La possibilità di mettere in pausa uno script o una sessione può essere estremamente importante, specialmente in caso di sovraccarico del sistema. A tal proposito esiste il comando PowerShell Start-Sleep che ti permette di specificare il periodo di tempo in cui bloccare le attività. Nel seguente esempio, l’attività viene bloccata per due secondi.

Start-Sleep -Seconds 2
shell

38. Test-Path

Puoi utilizzare il comando Test-Path per verificare se tutti gli elementi di un percorso specifico sono presenti. I risultati possibili sono “true”, se il percorso è valido e tutti gli elementi sono presenti, oppure “false” se il percorso non è valido o mancano alcuni elementi.

Test-Path -Path "C:\Documents and Settings\Utente"
False
shell

39. Test-Connection

Con PowerShell puoi anche testare le connessioni all’interno della rete. Mediante il comando Test-Connection, PowerShell invia un pacchetto di richiesta di eco ICMP (Internet Control Message Protocol) ai destinatari specificati e richiede una risposta. Nell’esempio seguente inviamo una richiesta al server02 mediante il protocollo IPv6.

Test-Connection -TargetName Server02 -IPv6
shell

40. Get-WinEvent

Se hai bisogno di visualizzare uno o più registri eventi, puoi usare diversi comandi PowerShell. Il cmdlet più pratico è Get-WinEvent. Per ottenere tutti i registri eventi del computer locale, puoi immettere il seguente comando:

Get-WinEvent -ListLog *
shell
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top