Uso di PowerShell (Terminale)
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:- Aprire il Microsoft Store
- Cercare "PowerShell"
- Installare l'applicazione ufficiale Microsoft
- Questo garantisce aggiornamenti automatici
0.2 - Creare la cartella "ricette"
Questa cartella servirà come spazio di lavoro per esercitarsi.Procedura manuale:
- Andare in "Documenti" (Esplora File)
- Fare click destro del mouse su uno spazio vuoto
- Selezionare "Nuovo" → "Cartella"
- Digitare il nome: "ricette"
- 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 CurrentUsero-Scope LocalMachineconBypassa 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.ps1Write-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 - Riepilogo
4.1 - Abbreviazioni e Alias Comuni
PowerShell supporta alias (nomi brevi) per i cmdlet principali:
| Cmdlet Completo | Alias Comune | Descrizione |
|---|---|---|
Get-Content | gc, cat, type | Legge file |
Set-Content | sc | Scrive/sovrascrive file |
Add-Content | ac | Aggiunge a file |
Remove-Item | rm, del, erase | Elimina file/cartelle |
Copy-Item | cp, copy | Copia file/cartelle |
Move-Item | mv, move | Sposta/rinomina |
New-Item | ni | Crea file/cartelle |
Get-ChildItem | ls, dir, gci | Lista contenuti cartella |
Set-Location | cd, sl | Cambia directory |
Get-Location | pwd, gl | Mostra directory corrente |
Clear-Host | cls, clear | Pulisce schermo |
Write-Host | Nessuno | Stampa 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
- Case-insensitive: PowerShell non distingue tra maiuscole e minuscole nei comandi
- Tab completion: Premi
Tabper completare automaticamente nomi di file e comandi - Help: Usa
Get-Help <comando>per documentazione dettagliata - Pipeline: Puoi combinare comandi con
|(pipe) per elaborazioni complesse - Variabili: Iniziano sempre con
$(es:$nome = "valore")
Buon lavoro con PowerShell! 🚀