<#
.SYNOPSIS
	Performs a selftest on your S.M.A.R.T. HDD/SSD devices.
.DESCRIPTION
	This script performs a selftest on your S.M.A.R.T. HDD/SSD devices.
        It requires smartctl (smartmontools package) and admin rights.
.PARAMETER type
	Specifies the type of selftest: either short (default) or long
.EXAMPLE
	PS> ./check-smart-devices
	✔️ short selftest started on S.M.A.R.T. device /dev/sda
.NOTES
	Author: Markus Fleschutz · License: CC0
.LINK
	https://github.com/fleschutz/PowerShell
#>

#Requires -RunAsAdministrator

param([string]$type = "short")

try {
	$Result=(smartctl --version)
	if ($lastExitCode -ne "0") { throw "Can't execute 'smartctl' - make sure smartmontools are installed" }

	$Devices = $(sudo smartctl --scan-open)
	foreach($Device in $Devices) {
		$Array = $Device.split(" ")
		$Device = $Array[0]
		$Result = (sudo smartctl --test=$type $Device)
		"✔️ $type selftest started on S.M.A.R.T. device $Device"
	}
	exit 0 # success
} catch {
	"⚠️ Error: $($Error[0]) ($($MyInvocation.MyCommand.Name):$($_.InvocationInfo.ScriptLineNumber))"
	exit 1
}