commit 1b72239d8bf1de5e5636c8c74cd6d09e922930af Author: Luca Sacchi Ricciardi Date: Tue Apr 7 08:20:23 2026 +0200 first commit diff --git a/Hyper-V/Report_Checkpoint_HyperV.ps1/README.md b/Hyper-V/Report_Checkpoint_HyperV.ps1/README.md new file mode 100644 index 0000000..593cb43 --- /dev/null +++ b/Hyper-V/Report_Checkpoint_HyperV.ps1/README.md @@ -0,0 +1,56 @@ +## Funzionalità dello Script + +Questo script PowerShell serve per **monitorare e documentare lo stato dei checkpoint (snapshot) delle macchine virtuali Hyper-V** presenti sul server locale. + +### Operazioni Principali + +Lo script esegue le seguenti attività: + +**Raccolta Informazioni** +- Recupera l'elenco completo di tutte le VM Hyper-V presenti sul sistema locale +- Per ogni VM, conta il numero di checkpoint esistenti +- Registra lo stato operativo corrente di ogni macchina virtuale (Running, Off, Saved, ecc.) + +**Generazione Report** +- Crea un report strutturato contenente tre informazioni per ogni VM: + - **NomeVM**: il nome della macchina virtuale + - **StatoOperativo**: lo stato attuale (accesa, spenta, salvata) + - **NumeroCheckpoint**: il conteggio totale dei checkpoint presenti + +**Output** +- Visualizza un'anteprima formattata a schermo per una verifica immediata +- Esporta automaticamente i dati in formato CSV nel percorso `C:\temp\Report_Checkpoint_HyperV.csv` +- Il CSV utilizza codifica UTF-8 e virgola come delimitatore + +--- + +## Privilegi di Amministratore + +**Lo script DEVE essere eseguito con privilegi di amministratore.** + +### Motivi Tecnici + +I cmdlet utilizzati dallo script richiedono permessi elevati: + +- **Get-VM**: richiede diritti amministrativi per accedere al servizio di gestione Hyper-V (VMMS) +- **Get-VMSnapshot**: necessita di permessi per interrogare la configurazione delle VM e i relativi checkpoint + +Senza privilegi elevati, lo script genererà errori di accesso negato e non potrà completare l'esecuzione. + +### Come Eseguirlo Correttamente + +Apri PowerShell con privilegi amministrativi: +- Cerca "PowerShell" nel menu Start +- Clicca con il tasto destro e seleziona **"Esegui come amministratore"** +- Esegui lo script dal prompt elevato + +--- + +## Utilità Pratica + +Questo script è particolarmente utile per: + +- **Auditing**: monitorare quanti checkpoint esistono per ciascuna VM +- **Gestione dello spazio**: identificare VM con troppi checkpoint che occupano spazio su disco +- **Compliance**: documentare periodicamente lo stato delle VM per scopi di conformità +- **Housekeeping**: pianificare operazioni di pulizia dei checkpoint obsoleti diff --git a/Hyper-V/Report_Checkpoint_HyperV.ps1/verify-checkpoints.ps1 b/Hyper-V/Report_Checkpoint_HyperV.ps1/verify-checkpoints.ps1 new file mode 100644 index 0000000..fe5f30b --- /dev/null +++ b/Hyper-V/Report_Checkpoint_HyperV.ps1/verify-checkpoints.ps1 @@ -0,0 +1,34 @@ +<# +.SYNOPSIS + Report Checkpoint Hyper-V +.DESCRIPTION + Script per recuperare l'elenco delle VM Hyper-V locali, contare i relativi + checkpoint (snapshot) ed esportare il risultato in un file CSV. +#> +# Configurazione percorso di esportazione +$ExportPath = "C:\temp\Report_Checkpoint_HyperV.csv" +# Verifica che la directory di destinazione esista, altrimenti la crea +$TargetDir = Split-Path $ExportPath +if (-not (Test-Path $TargetDir)) { + New-Item -ItemType Directory -Path $TargetDir | Out-Null +} +Write-Host "Recupero delle informazioni dalle VM in corso..." -ForegroundColor Cyan +# Recupera tutte le Virtual Machine +$VMs = Get-VM +# Elabora i dati creando oggetti personalizzati +$Report = foreach ($VM in $VMs) { + # L'uso di @() garantisce che la proprietà .Count restituisca un valore corretto + # anche se ci sono 0 o esattamente 1 checkpoint. + $Checkpoints = @(Get-VMSnapshot -VMName $VM.Name) + [PSCustomObject]@{ + NomeVM = $VM.Name + StatoOperativo = $VM.State + NumeroCheckpoint = $Checkpoints.Count + } +} +# Double check: stampa a video i risultati per un controllo rapido +Write-Host "`n--- Anteprima Report ---" -ForegroundColor Yellow +$Report | Format-Table -AutoSize +# Esportazione del file CSV +$Report | Export-Csv -Path $ExportPath -NoTypeInformation -Encoding UTF8 -Delimiter "," +Write-Host "Report generato e salvato correttamente in: $ExportPath" -ForegroundColor Green diff --git a/README.md b/README.md new file mode 100644 index 0000000..3ecadb3 --- /dev/null +++ b/README.md @@ -0,0 +1,187 @@ +# 🛠️ Script di Amministrazione + +Repository di script PowerShell per l'amministrazione e la gestione di sistemi Windows, Hyper-V e Active Directory. + +## 📋 Descrizione + +Questa raccolta contiene script PowerShell progettati per automatizzare operazioni comuni di amministrazione di sistema, semplificare attività ripetitive e generare report dettagliati per il monitoraggio dell'infrastruttura IT. + +## 📂 Struttura Repository + +``` +. +├── Hyper-V/ +│ ├── Report_Checkpoint_HyperV.ps1 +│ └── ... +├── Active-Directory/ +│ └── ... +├── Exchange/ +│ └── ... +├── Utilities/ +│ └── ... +└── README.md +``` + +## ✅ Requisiti + +### Requisiti Generali +- **Sistema Operativo**: Windows Server 2016 o superiore / Windows 10/11 Pro +- **PowerShell**: Versione 5.1 o superiore +- **Privilegi**: Privilegi di amministratore per la maggior parte degli script +- **Execution Policy**: Configurata per permettere l'esecuzione di script + +### Requisiti Specifici per Categoria + +#### Hyper-V +- Ruolo Hyper-V installato e configurato +- Modulo PowerShell `Hyper-V` + +#### Active Directory +- RSAT (Remote Server Administration Tools) installato +- Modulo PowerShell `ActiveDirectory` + +#### Exchange +- Exchange Management Shell o modulo Exchange installato +- Connessione al server Exchange + +## 🚀 Utilizzo + +### 1. Configurazione Execution Policy + +Prima di eseguire qualsiasi script, verificare la policy di esecuzione: + +```powershell +Get-ExecutionPolicy +``` + +Se necessario, modificarla (come amministratore): + +```powershell +Set-ExecutionPolicy RemoteSigned -Scope CurrentUser +``` + +### 2. Esecuzione Script + +**Metodo 1**: Esecuzione diretta + +```powershell +# Aprire PowerShell come Amministratore +cd C:\path\to\repository +.\Hyper-V\Report_Checkpoint_HyperV.ps1 +``` + +**Metodo 2**: Importazione e utilizzo come funzione + +```powershell +. .\Hyper-V\Report_Checkpoint_HyperV.ps1 +``` + +### 3. Personalizzazione Parametri + +Molti script contengono variabili configurabili all'inizio del file. Modificare i valori secondo le proprie esigenze: + +```powershell +# Esempio +$ExportPath = "C:\Reports\MioReport.csv" +$Server = "Server01" +``` + +## 📜 Script Disponibili + +### Hyper-V + +#### Report_Checkpoint_HyperV.ps1 +**Descrizione**: Genera un report CSV contenente l'elenco delle VM Hyper-V locali con il conteggio dei checkpoint. + +**Utilizzo**: +```powershell +.\Hyper-V\Report_Checkpoint_HyperV.ps1 +``` + +**Output**: File CSV in `C:\temp\Report_Checkpoint_HyperV.csv` + +**Privilegi richiesti**: Amministratore + +--- + +*Aggiungi qui la documentazione per gli altri script man mano che vengono creati* + +## ⚠️ Avvertenze + +- **Backup**: Eseguire sempre un backup prima di utilizzare script che modificano configurazioni di sistema +- **Testing**: Testare gli script in ambiente non di produzione prima di utilizzarli su sistemi critici +- **Privilegi**: Verificare che l'account utilizzato abbia i privilegi necessari +- **Audit**: Controllare sempre il codice degli script prima dell'esecuzione + +## 🤝 Contribuire + +I contributi sono benvenuti! Per contribuire: + +1. Effettua il fork del repository +2. Crea un branch per la tua feature (`git checkout -b feature/NuovaFunzionalita`) +3. Commit delle modifiche (`git commit -m 'Aggiunta nuova funzionalità'`) +4. Push al branch (`git push origin feature/NuovaFunzionalita`) +5. Apri una Pull Request + +### Linee Guida per i Contributi + +- Includere commenti chiari e descrittivi nel codice +- Utilizzare il blocco `.SYNOPSIS` e `.DESCRIPTION` per la documentazione +- Gestire correttamente gli errori con try-catch +- Fornire output informativi all'utente +- Aggiornare il README con la documentazione dello script + +## 📝 Best Practices + +Gli script in questo repository seguono queste best practices: + +- **Documentazione**: Ogni script include commenti header con descrizione e utilizzo +- **Gestione Errori**: Implementazione di error handling appropriato +- **Output Strutturato**: Utilizzo di oggetti personalizzati (PSCustomObject) per dati strutturati +- **Feedback Utente**: Messaggi informativi durante l'esecuzione +- **Path Validation**: Verifica dell'esistenza di directory prima della scrittura +- **Encoding Standard**: Utilizzo di UTF-8 per i file di output + +## 📊 Report e Log + +Gli script che generano report utilizzano le seguenti convenzioni: + +- **Formato predefinito**: CSV con encoding UTF-8 +- **Percorso predefinito**: `C:\temp\` (modificabile) +- **Nomenclatura**: Descrittiva e con timestamp quando appropriato +- **Delimitatore CSV**: Virgola (,) + +## 🔐 Sicurezza + +- Mai includere credenziali hardcoded negli script +- Utilizzare Windows Credential Manager o variabili sicure per le password +- Limitare i permessi di esecuzione agli amministratori autorizzati +- Effettuare audit regolari delle modifiche al repository + +## 📞 Supporto + +Per problemi, domande o suggerimenti: + +- Aprire una Issue su GitHub +- Verificare la documentazione degli script +- Controllare i requisiti di sistema + +## 📄 Licenza + +Questo progetto è distribuito sotto licenza MIT. Vedere il file `LICENSE` per maggiori dettagli. + +--- + +**Nota**: Questo repository è in continua evoluzione. Gli script vengono aggiunti e aggiornati regolarmente in base alle necessità operative. + +## 🔄 Changelog + +### [Data] - Versione Iniziale +- Aggiunto script Report_Checkpoint_HyperV.ps1 +- Creata struttura repository +- Documentazione iniziale + +--- + +**Ultimo aggiornamento**: 07 aprile 2026 +