36 lines
1.4 KiB
PowerShell
36 lines
1.4 KiB
PowerShell
|
|
function Start-Shutdown {
|
||
|
|
<#
|
||
|
|
.SYNOPSIS
|
||
|
|
Module for shutdown and restart the computer at a specified time
|
||
|
|
.DESCRIPTION
|
||
|
|
Example:
|
||
|
|
# Start-Shutdown -Time "18:00"
|
||
|
|
# Start-Shutdown -Restart -Time "18:00"
|
||
|
|
# Start-Shutdown -Cancel
|
||
|
|
.LINK
|
||
|
|
https://github.com/Lifailon/PS-Commands
|
||
|
|
#>
|
||
|
|
param(
|
||
|
|
[string]$Time,
|
||
|
|
[switch]$Restart,
|
||
|
|
[switch]$Cancel
|
||
|
|
)
|
||
|
|
if ($Time) {
|
||
|
|
$currentDateTime = Get-Date
|
||
|
|
$shutdownTime = Get-Date $Time
|
||
|
|
if ($shutdownTime -lt $currentDateTime) {
|
||
|
|
$shutdownTime = $shutdownTime.AddDays(1)
|
||
|
|
}
|
||
|
|
$timeUntilShutdown = $shutdownTime - $currentDateTime
|
||
|
|
$secondsUntilShutdown = [math]::Round($timeUntilShutdown.TotalSeconds)
|
||
|
|
}
|
||
|
|
if ($Cancel) {
|
||
|
|
Start-Process -FilePath "shutdown.exe" -ArgumentList "/a"
|
||
|
|
} elseif ($Restart) {
|
||
|
|
Write-Host "The computer will restart after $($timeUntilShutdown.Hours) hours and $($timeUntilShutdown.Minutes) minutes."
|
||
|
|
Start-Process -FilePath "shutdown.exe" -ArgumentList "/r", "/f", "/t", "$secondsUntilShutdown"
|
||
|
|
} else {
|
||
|
|
Write-Host "The computer will shutdown after $($timeUntilShutdown.Hours) hours and $($timeUntilShutdown.Minutes) minutes."
|
||
|
|
Start-Process -FilePath "shutdown.exe" -ArgumentList "/s", "/f", "/t", "$secondsUntilShutdown"
|
||
|
|
}
|
||
|
|
}
|