$RunApplicationsOnAC = @("C:\Windows\notepad.exe","C:\Windows\System32\cmd.exe")
Function Get-IsOnACPower
{
return (Get-WmiObject -Namespace root\WMI -Class BatteryStatus).PowerOnline
}
Function Main
{
$PowerState = Get-IsOnACPower
while($true)
{
$CurrentPowerStatus = Get-IsOnACPower
if($PowerState -ne $CurrentPowerStatus)
{
$PowerState = $CurrentPowerStatus
# Power status has changed to on AC Power (plugged in)
if($PowerState)
{
foreach($RunApplicationOnAC in $RunApplicationsOnAC)
{
Start-Process -FilePath $RunApplicationOnAC -Wait:$false
}
}
else
{
foreach($RunApplicationOnAC in $RunApplicationsOnAC)
{
$ProcessName = (Split-Path -Leaf $RunApplicationOnAC).Replace(".exe","")
Stop-Process -Name $ProcessName -Force -ErrorAction SilentlyContinue
}
}
}
if($PowerState)
{
foreach($RunApplicationOnAC in $RunApplicationsOnAC)
{
$ProcessName = (Split-Path -Leaf $RunApplicationOnAC).Replace(".exe","")
try
{
Get-Process -Name $ProcessName -ErrorAction Stop | Out-Null
}
catch
{
Start-Process $RunApplicationOnAC -Wait:$false
}
}
}
Start-Sleep -Seconds 5
}
}
Main