first of all i am not very good with powershell yet, so sorry for any big mistakes, im still learning Also i wasnt sure, if the 365 subforum is correct if this belongs to powershell.
I want to get the reporting done for M365 so i am checking via powershell for the used storage and users count via
Code: Select all
$users = Get-VBOLicensedUser -Organization $tenant
$userCount = $users.Count
As far as i understood we dont need those for the billing reporting. I didnt find a way to filter the new users out though.
shortened version of the script for context reasons:
Code: Select all
# Veeam Backup for Microsoft 365 Server
$veeamServer = "localhost"
# Vorherigen Monat und Jahr ermitteln
$previousMonth = (Get-Date).AddMonths(-1)
$previousMonthYear = $previousMonth.Year
$previousMonthMonth = $previousMonth.Month
# Den Ausgabepfad entsprechend aktualisieren
$outputDirectory = "C:\Users\Administrator\Desktop\Reports\$previousMonthYear\$previousMonthMonth"
# Überprüfen, ob der Ausgabepfad existiert, und wenn nicht, ihn erstellen
if (-not (Test-Path -Path $outputDirectory)) {
New-Item -ItemType Directory -Path $outputDirectory | Out-Null
}
# Aktuelles Datum als Teil des Dateinamens für den HTML-Bericht
$currentDate = Get-Date -Format "yyyy_MM_dd"
$outputFile = "$outputDirectory\VeeamReport_$currentDate.html"
# Ersten und letzten Tag des vorherigen Monats berechnen
$startDate = $previousMonth.AddDays(-(Get-Date).Day + 1)
$endDate = $previousMonth.AddDays(-1)
# Verbindung zur Veeam-Instanz herstellen
try {
Connect-VBOServer -Server $veeamServer
# HTML-Ausgabe
$htmlOutput = "<html><head><title>Veeam Backup for Microsoft 365 BaaS</title></head><body>"
# Alle Tenants abrufen und alphabetisch sortieren
$tenants = Get-VBOOrganization | Sort-Object -Property Name
# Für jeden Tenant die gewünschten Informationen abrufen und ausgeben
foreach ($tenant in $tenants) {
$tenantName = $tenant.Name
# Holen der Usage-Daten für den Tenant
$usageData = Get-VBOUsageData -Organization $tenant
# Speicherplatz für den aktuellen Tenant
$usedSpace = $usageData.ObjectStorageUsedSpace
# Überprüfen, ob $usedSpace ein Array ist und die Summe berechnen
if ($usedSpace -is [array]) {
$totalUsedSpace = ($usedSpace | Measure-Object -Sum).Sum
} else {
$totalUsedSpace = $usedSpace
}
# Lizenzierten Benutzer für den aktuellen Tenant abrufen
$users = Get-VBOLicensedUser -Organization $tenant
$userCount = $users.Count
# Speicherplatz in GB und auf 2 Dezimalstellen abrunden
$formattedStorageSpace = "{0:N2}" -f ($totalUsedSpace / 1GB)
# HTML-Ausgabe für jeden Tenant erstellen
$htmlOutput += "<h2>$tenantName</h2>"
$htmlOutput += "<p>Anzahl der Benutzer: $userCount</p>"
$htmlOutput += "<p>Speicherplatz: $formattedStorageSpace GB</p>"
# Ausgabe für jeden Tenant in der Konsole
Write-Host "Tenant: $tenantName"
Write-Host "Anzahl der Benutzer: $userCount"
Write-Host "Speicherplatz: $formattedStorageSpace GB"
}
# HTML schließen
$htmlOutput += "</body></html>"
# HTML in eine Datei schreiben
$htmlOutput | Out-File -FilePath $outputFile -Encoding UTF8
# Lizenzübersichtsbericht erstellen
Get-VBOLicenseOverviewReport -StartTime $startDate -EndTime $endDate -Format PDF -Path $outputDirectory
# Bericht über den Speicherverbrauch erstellen
Get-VBOStorageConsumptionReport -StartTime $startDate -EndTime $endDate -Format PDF -Path $outputDirectory
} catch {
# Fehlerbehandlung: Hier wird die Exception-Meldung ausgegeben, falls ein Fehler auftritt
Write-Host "Ein Fehler ist aufgetreten: $($_.Exception.Message)"
} finally {
# Verbindung trennen
Disconnect-VBOServer
}