<# .SYNOPSIS Lager en rapport over diskbruk på en eller flere Windows-servere. .DESCRIPTION Henter ledig og total kapasitet for alle faste disker via CIM, og markerer volumer som har mindre ledig plass enn en gitt terskel. Resultatet kan vises i konsollet eller eksporteres til CSV. Skriveoperasjonen (CSV) støtter -WhatIf. .PARAMETER ComputerName En eller flere maskiner å sjekke. Standard er den lokale maskinen. .PARAMETER ThresholdPercent Terskel for ledig plass i prosent. Volumer under terskelen flagges. Standard 15. .PARAMETER CsvPath Valgfri sti for CSV-eksport. Utelates for kun konsoll-utskrift. .EXAMPLE .\Get-DiskSpaceReport.ps1 Viser diskbruk for den lokale serveren med standardterskel (15 %). .EXAMPLE .\Get-DiskSpaceReport.ps1 -ComputerName SRV01,SRV02 -ThresholdPercent 10 -CsvPath C:\Temp\disk.csv Sjekker to servere med 10 % terskel og eksporterer til CSV. .NOTES Forfatter : W-tek Drift (WT) Opprettet : 2026-06-18 Versjon : 1.0.0 Plattform : Windows Server 2016/2019/2022 Krav : PowerShell 5.1+, WinRM for fjernkjøring Rettigheter : Lokal admin på målmaskinene Tags : windows-server, disk, vedlikehold, rapportering Endringslogg: 2026-06-18 1.0.0 Første versjon (WT) #> #Requires -Version 5.1 [CmdletBinding(SupportsShouldProcess = $true)] param( [string[]] $ComputerName = $env:COMPUTERNAME, [ValidateRange(1, 99)] [int] $ThresholdPercent = 15, [string] $CsvPath ) begin { $ErrorActionPreference = 'Stop' Set-StrictMode -Version Latest $results = [System.Collections.Generic.List[object]]::new() } process { foreach ($computer in $ComputerName) { try { $disks = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" -ComputerName $computer foreach ($disk in $disks) { $freePct = [math]::Round(($disk.FreeSpace / $disk.Size) * 100, 1) $results.Add([pscustomobject]@{ Server = $computer Drive = $disk.DeviceID FreeGB = [math]::Round($disk.FreeSpace / 1GB, 1) TotalGB = [math]::Round($disk.Size / 1GB, 1) FreePercent = $freePct BelowThreshold = $freePct -lt $ThresholdPercent }) } } catch { Write-Warning "Kunne ikke hente data fra ${computer}: $($_.Exception.Message)" } } } end { $results | Sort-Object FreePercent | Format-Table -AutoSize if ($CsvPath) { if ($PSCmdlet.ShouldProcess($CsvPath, "Skriv CSV-rapport")) { $results | Export-Csv -Path $CsvPath -NoTypeInformation -Encoding UTF8 Write-Output "Rapport skrevet til $CsvPath" } } }