87 lines
2.8 KiB
PowerShell
87 lines
2.8 KiB
PowerShell
<#
|
|
.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"
|
|
}
|
|
}
|
|
}
|