mirror of
https://github.com/fleschutz/PowerShell.git
synced 2025-04-22 01:48:20 +02:00
Added query-smart-data.ps1
This commit is contained in:
parent
078a92b111
commit
52d8e526e2
@ -58,6 +58,7 @@ open-calculator.ps1, starts the calculator program
|
|||||||
open-email-client.ps1, starts the default email client
|
open-email-client.ps1, starts the default email client
|
||||||
play-beep.ps1, plays a beep sound
|
play-beep.ps1, plays a beep sound
|
||||||
poweroff.ps1, halts the local computer (needs administrator rights)
|
poweroff.ps1, halts the local computer (needs administrator rights)
|
||||||
|
query-smart-data.ps1, queries the S.M.A.R.T. data of your HDD/SSD's and saves it to the current/given directory
|
||||||
new-email.ps1, starts the default email client to write a new email
|
new-email.ps1, starts the default email client to write a new email
|
||||||
reboot.ps1, reboots the local computer (needs administrator rights)
|
reboot.ps1, reboots the local computer (needs administrator rights)
|
||||||
reboot-fritzbox.ps1, reboots the FRITZ!box device
|
reboot-fritzbox.ps1, reboots the FRITZ!box device
|
||||||
|
|
@ -65,6 +65,7 @@ The following PowerShell scripts can be found in the [Scripts/](Scripts/) subfol
|
|||||||
* [open-email-client.ps1](Scripts/open-browser.ps1) - starts the default email client
|
* [open-email-client.ps1](Scripts/open-browser.ps1) - starts the default email client
|
||||||
* [play-beep.ps1](Scripts/play-beep.ps1) - plays a beep sound
|
* [play-beep.ps1](Scripts/play-beep.ps1) - plays a beep sound
|
||||||
* [poweroff.ps1](Scripts/poweroff.ps1) - halts the local computer (needs administrator rights)
|
* [poweroff.ps1](Scripts/poweroff.ps1) - halts the local computer (needs administrator rights)
|
||||||
|
* [query-smart-data.ps1](Scripts/query-smart-data.ps1) - queries the S.M.A.R.T. data of your HDD/SSD's
|
||||||
* [new-email.ps1](Scripts/new-email.ps1) - starts the default email client to write a new email
|
* [new-email.ps1](Scripts/new-email.ps1) - starts the default email client to write a new email
|
||||||
* [next-joke.ps1](Scripts/next-joke.ps1) - gets the next random Juck Norris joke
|
* [next-joke.ps1](Scripts/next-joke.ps1) - gets the next random Juck Norris joke
|
||||||
* [reboot.ps1](Scripts/reboot.ps1) - reboots the local computer (needs administrator rights)
|
* [reboot.ps1](Scripts/reboot.ps1) - reboots the local computer (needs administrator rights)
|
||||||
|
54
Scripts/query-smart-data.ps1
Executable file
54
Scripts/query-smart-data.ps1
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/snap/bin/powershell
|
||||||
|
<#
|
||||||
|
.SYNTAX ./query-smart-data.ps1 [<directory>]
|
||||||
|
.DESCRIPTION queries the S.M.A.R.T. data of your HDD/SSD's and saves it to the current/given directory
|
||||||
|
.LINK https://github.com/fleschutz/PowerShell
|
||||||
|
.NOTES Author: Markus Fleschutz / License: CC0
|
||||||
|
requires smartctl from smartmontools
|
||||||
|
it's recommended to call this script once per day
|
||||||
|
#>
|
||||||
|
|
||||||
|
#Requires -RunAsAdministrator
|
||||||
|
|
||||||
|
param([string]$Directory = "")
|
||||||
|
|
||||||
|
|
||||||
|
function CheckIfInstalled {
|
||||||
|
try {
|
||||||
|
$null = $(smartctl --version)
|
||||||
|
} catch {
|
||||||
|
write-error "smartctl is not installed - make sure smartmontools are installed"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if ($Directory -eq "") {
|
||||||
|
$Directory = "$PWD"
|
||||||
|
}
|
||||||
|
|
||||||
|
write-output "(1) Checking for 'smartctl'..."
|
||||||
|
CheckIfInstalled
|
||||||
|
|
||||||
|
write-output "(2) Scanning for S.M.A.R.T. devices..."
|
||||||
|
$Devices = $(smartctl --scan-open)
|
||||||
|
|
||||||
|
[int]$DevNo = 1
|
||||||
|
foreach($Device in $Devices) {
|
||||||
|
write-output "(3) Querying data from S.M.A.R.T. device $Device..."
|
||||||
|
|
||||||
|
$Time = (Get-Date)
|
||||||
|
$Filename = "$Directory/SMART-dev$($DevNo)-$($Time.Year)-$($Time.Month)-$($Time.Day).json"
|
||||||
|
write-output "(4) Saving data to $Filename..."
|
||||||
|
|
||||||
|
$Cmd = "smartctl --all --json " + $Device
|
||||||
|
|
||||||
|
Invoke-Expression $Cmd > $Filename
|
||||||
|
$DevInfo++
|
||||||
|
}
|
||||||
|
write-output "DONE."
|
||||||
|
exit 0
|
||||||
|
} catch {
|
||||||
|
write-error "ERROR in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
|
||||||
|
exit 1
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user