Sviluppo & DevOps

Uso di PowerShell (Terminale)

07 August 2026 v1.0

I comandi più comuni da usare nel terminale per gestire: - Cartelle - File nei sistemi Windows.

Inizio

0 - Installazione

0.0 - Requisiti

  • Richiesto: Windows 10 o Windows 11
  • PowerShell è già integrato in Windows, ma la versione preinstallata potrebbe non essere l'ultima.

0.1 - Installare PowerShell aggiornato

Per avere sempre l'ultima versione con le funzionalità più recenti:
  1. Aprire il Microsoft Store
  2. Cercare "PowerShell"
  3. Installare l'applicazione ufficiale Microsoft
  4. Questo garantisce aggiornamenti automatici

0.2 - Creare la cartella "ricette"

Questa cartella servirà come spazio di lavoro per esercitarsi.

Procedura manuale:

  1. Andare in "Documenti" (Esplora File)
  2. Fare click destro del mouse su uno spazio vuoto
  3. Selezionare "Nuovo""Cartella"
  4. Digitare il nome: "ricette"
  5. Premere Invio


1 - Gestione dei File

File di riferimento: appunti.txt

1.1 - Creare un file vuoto

New-Item -Path ".\appunti.txt" -ItemType File

Spiegazione:

  • New-Item: Cmdlet (comando) che crea nuovi elementi
  • -Path: Specifica il percorso e il nome del file
  • -ItemType File: Indica che vogliamo creare un file (non una cartella)
  • .\appunti.txt: Il punto indica la cartella corrente

Cos'è: Crea un file completamente vuoto (0 byte) nella posizione specificata.


1.2 - Aggiungere contenuto a un file

Set-Content -Path ".\appunti.txt" -Value "Prima riga di testo"

Spiegazione:

  • Set-Content: Sostituisce tutto il contenuto del file con il nuovo valore
  • -Value: Il testo da inserire nel file

Cos'è: Sovrascrive completamente il contenuto esistente del file con il nuovo testo. Se il file non esiste, lo crea.


1.3 - Aggiungere contenuto con nuova riga

Add-Content -Path ".\appunti.txt" -Value "Seconda riga di testo"

Spiegazione:

  • Add-Content: Aggiunge contenuto alla fine del file senza cancellare quello esistente
  • Automaticamente aggiunge una nuova riga prima del nuovo contenuto

Cos'è: Accoda testo al file esistente, preservando il contenuto precedente. Ogni chiamata aggiunge una nuova riga.


1.4 - Leggere il contenuto di un file

Get-Content -Path ".\appunti.txt"

Spiegazione:

  • Get-Content: Legge e visualizza il contenuto del file
  • Mostra ogni riga separatamente nell'output

Cos'è: Visualizza tutto il contenuto del file nella console. Utile per verificare cosa contiene un file.


1.5 - Cancellare un file

Remove-Item -Path ".\appunti.txt"

Spiegazione:

  • Remove-Item: Elimina l'elemento specificato
  • ⚠️ Attenzione: L'eliminazione è permanente (non va nel Cestino)

Cos'è: Rimuove definitivamente il file dal sistema. Non c'è possibilità di recupero tramite Cestino.


1.6 - Spostare un file

Move-Item -Path ".\appunti.txt" -Destination ".\backup\appunti.txt"

Spiegazione:

  • Move-Item: Sposta un file da una posizione all'altra
  • -Destination: La nuova posizione del file
  • Il file originale viene rimosso dalla posizione iniziale

Cos'è: Trasferisce il file in una nuova posizione. Equivale a "taglia e incolla".

1.6.1 - Rinominare un file (spostamento su se stesso)

Move-Item -Path ".\appunti.txt" -Destination ".\note.txt"

Spiegazione:

  • Quando la destinazione è nella stessa cartella ma con nome diverso, PowerShell rinomina il file
  • È un modo efficiente per cambiare nome ai file

Cos'è: Cambia il nome del file mantenendolo nella stessa posizione.


1.7 - Copiare un file

Copy-Item -Path ".\appunti.txt" -Destination ".\backup\appunti.txt"

Spiegazione:

  • Copy-Item: Crea una copia del file
  • Il file originale rimane nella posizione iniziale
  • -Destination: Dove creare la copia

Cos'è: Duplica il file in una nuova posizione. Equivale a "copia e incolla".

1.7.1 - Copiare e rinominare (copia su se stesso con nome diverso)

Copy-Item -Path ".\appunti.txt" -Destination ".\appunti_copia.txt"

Spiegazione:

  • Crea una copia del file nella stessa cartella ma con un nome diverso
  • Utile per creare versioni alternative dello stesso file

Cos'è: Duplica il file cambiando il nome nella copia.


1.8 - Fare backup del file con data e ora

$data = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
Copy-Item -Path ".\appunti.txt" -Destination ".\backup\appunti_$data.txt"

Spiegazione:

  • Get-Date -Format: Ottiene la data e ora corrente nel formato specificato
  • $data: Variabile che contiene la stringa della data
  • Il nome del file include la data/ora per identificare quando è stato fatto il backup

Cos'è: Crea una copia del file con un nome unico che include timestamp, permettendo di mantenere multiple versioni storiche.


2 - Gestione delle Cartelle

Cartella di riferimento: Appunti

Cos'è una cartella?

Una cartella (directory) è un contenitore che organizza file e altre sottocartelle. In PowerShell, le cartelle sono gestite con gli stessi cmdlet dei file, ma specificando -ItemType Directory.

2.1 - Creare una cartella

New-Item -Path ".\Appunti" -ItemType Directory

Spiegazione:

  • -ItemType Directory: Specifica che stiamo creando una cartella, non un file
  • Se la cartella esiste già, PowerShell mostrerà un errore (a meno che non si usi -Force)

Cos'è: Crea una nuova directory vuota nella posizione specificata.


2.2 - Cancellare una cartella

Remove-Item -Path ".\Appunti" -Recurse

Spiegazione:

  • -Recurse: Parametro necessario per eliminare cartelle che contengono file o sottocartelle
  • Elimina ricorsivamente tutto il contenuto

Cos'è: Rimuove la cartella e tutto il suo contenuto in modo permanente. ⚠️ Operazione irreversibile.


2.3 - Copiare una cartella

Copy-Item -Path ".\Appunti" -Destination ".\Backup\Appunti" -Recurse

Spiegazione:

  • -Recurse: Copia anche tutto il contenuto della cartella (file e sottocartelle)
  • Senza questo parametro, copierebbe solo la cartella vuota

Cos'è: Duplica l'intera struttura della cartella con tutti i suoi contenuti.

2.3.1 - Copiare e rinominare una cartella

Copy-Item -Path ".\Appunti" -Destination ".\Appunti_Copia" -Recurse

Spiegazione:

  • Crea una copia della cartella con un nome diverso nella stessa posizione
  • Mantiene tutta la struttura interna

Cos'è: Duplica la cartella cambiandone il nome nella copia.


2.4 - Spostare una cartella

Move-Item -Path ".\Appunti" -Destination ".\Archivio\Appunti"

Spiegazione:

  • Sposta l'intera cartella e il suo contenuto
  • Più veloce di copiare ed eliminare perché non duplica i dati

Cos'è: Trasferisce la cartella in una nuova posizione. Equivale a "taglia e incolla" per cartelle.

2.4.1 - Rinominare una cartella

Move-Item -Path ".\Appunti" -Destination ".\Note"

Spiegazione:

  • Quando la destinazione è nella stessa cartella padre con nome diverso, rinomina
  • Metodo preferito per rinominare cartelle in PowerShell

Cos'è: Cambia il nome della cartella mantenendola nella stessa posizione.


2.5 - Creare un backup della cartella con data e ora

$data = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
Copy-Item -Path ".\Appunti" -Destination ".\Backup\Appunti_$data" -Recurse

Spiegazione:

  • Combina la copia ricorsiva con il timestamp nel nome
  • Permette di mantenere multiple versioni temporali della cartella

Cos'è: Crea una copia completa della cartella con un nome che include data e ora, utile per versioning e backup storici.


3 - Script

3.1 - Attivazione permessi script ".ps1" temporaneamente

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Spiegazione:

  • Set-ExecutionPolicy: Modifica le policy di sicurezza per l'esecuzione degli script
  • -Scope Process: La modifica vale solo per la sessione corrente di PowerShell
  • -ExecutionPolicy Bypass: Permette l'esecuzione di qualsiasi script senza restrizioni
  • Sicuro: Al termine della sessione, le policy tornano alle impostazioni originali

Cos'è: Consente temporaneamente l'esecuzione di script PowerShell (.ps1) senza modificare permanentemente le impostazioni di sicurezza del sistema. Ideale per test e sviluppo.

🔒 Nota di sicurezza: Non usare -Scope CurrentUser o -Scope LocalMachine con Bypass a meno che non sia strettamente necessario.


3.2 - Creare hello.ps1

Metodo 1: Usando Notepad

notepad .\hello.ps1

Nel file scrivere:

Write-Host "Hello World!"

Salvare e chiudere Notepad.

Spiegazione:

  • notepad .\hello.ps1: Apre Notepad creando/modificando il file hello.ps1
  • Write-Host: Cmdlet che scrive output sulla console
  • Le virgolette doppie permettono di includere spazi nel testo

Cos'è: Crea il primo script PowerShell che visualizza un messaggio. .ps1 è l'estensione standard per gli script PowerShell.

Metodo alternativo (da PowerShell):

Set-Content -Path ".\hello.ps1" -Value 'Write-Host "Hello World!"'

3.3 - Eseguire hello.ps1

.\hello.ps1

Spiegazione:

  • .\: Indica che lo script si trova nella cartella corrente
  • Necessario per distinguere da comandi built-in di PowerShell
  • PowerShell richiede esplicitamente il percorso per eseguire script (misura di sicurezza)

Cos'è: Esegue lo script PowerShell. L'output sarà: Hello World!

⚠️ Importante: Se ricevi un errore di execution policy, assicurati di aver eseguito il comando al punto 3.1.


4.1 - Abbreviazioni e Alias Comuni

PowerShell supporta alias (nomi brevi) per i cmdlet principali:

Cmdlet CompletoAlias ComuneDescrizione
Get-Contentgc, cat, typeLegge file
Set-ContentscScrive/sovrascrive file
Add-ContentacAggiunge a file
Remove-Itemrm, del, eraseElimina file/cartelle
Copy-Itemcp, copyCopia file/cartelle
Move-Itemmv, moveSposta/rinomina
New-ItemniCrea file/cartelle
Get-ChildItemls, dir, gciLista contenuti cartella
Set-Locationcd, slCambia directory
Get-Locationpwd, glMostra directory corrente
Clear-Hostcls, clearPulisce schermo
Write-HostNessunoStampa output

Esempi pratici con alias:

# Questi comandi sono equivalenti:
Get-Content .\appunti.txt
gc .\appunti.txt
cat .\appunti.txt
type .\appunti.txt

# Per vedere tutti gli alias disponibili:
Get-Alias

💡 Consiglio: Usa i nomi completi negli script per chiarezza, gli alias vanno bene per uso interattivo rapido.


📌 Note Finali

  1. Case-insensitive: PowerShell non distingue tra maiuscole e minuscole nei comandi
  2. Tab completion: Premi Tab per completare automaticamente nomi di file e comandi
  3. Help: Usa Get-Help <comando> per documentazione dettagliata
  4. Pipeline: Puoi combinare comandi con | (pipe) per elaborazioni complesse
  5. Variabili: Iniziano sempre con $ (es: $nome = "valore")

Buon lavoro con PowerShell! 🚀

Torna agli Appunti