first commit
This commit is contained in:
56
Hyper-V/Report_Checkpoint_HyperV.ps1/README.md
Normal file
56
Hyper-V/Report_Checkpoint_HyperV.ps1/README.md
Normal file
@@ -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
|
||||||
34
Hyper-V/Report_Checkpoint_HyperV.ps1/verify-checkpoints.ps1
Normal file
34
Hyper-V/Report_Checkpoint_HyperV.ps1/verify-checkpoints.ps1
Normal file
@@ -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
|
||||||
187
README.md
Normal file
187
README.md
Normal file
@@ -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
|
||||||
|
|
||||||
Reference in New Issue
Block a user