powershell建立計劃任務
阿新 • • 發佈:2021-02-03
function Get-ScriptDirectory { Split-Path -Parent $PSCommandPath } function Check-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { return $true } else { return $false } } $pt = Get-ScriptDirectory $arg = "-exec bypass -WindowStyle Hidden -file " + $PSCommandPath if(-not (Check-IsElevated)) { Start-Process "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ArgumentList $arg -Verb runAs -Wait return } $diablerecover = Join-Path -Path $pt -ChildPath "\file\diablerecover.bat" Start-Process "C:\Windows\System32\reg.exe" -ArgumentList "ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f" -WindowStyle Hidden Start-Process $diablerecover -WindowStyle Hidden $Evcemqx = Get-Service | Where-Object { $_.Name -eq "emqx" } if ($Evcemqx.Length -eq 0) { $emqxcmd = Join-Path -Path $pt -ChildPath "emqx\bin\emqx.cmd" Start-Process $emqxcmd "install" -Wait -WindowStyle Hidden Set-Service emqx -StartupType Automatic Start-Service emqx } $MqttDir = Join-Path -Path $pt -ChildPath "Release" $Mqtt = Join-Path -Path $pt -ChildPath "\file\autorun.bat" $startvm = Join-Path -Path $pt -ChildPath "\file\startvm.bat" $User = [Security.Principal.WindowsIdentity]::GetCurrent() $Scheduler = New-Object -ComObject Schedule.Service $Scheduler.Connect($env:COMPUTERNAME) $Task = $Scheduler.NewTask(0) [string]$TaskName = "StartHook" $RegistrationInfo = $Task.RegistrationInfo $RegistrationInfo.Description = $TaskName $RegistrationInfo.Author = $User.Name $Action = $Task.Actions.Create(0) $Action.Path = $Mqtt $Action.WorkingDirectory = $MqttDir $Triggers = $Task.Triggers.Create(9) $Settings = $Task.Settings $Settings.Enabled = $True $Settings.StartWhenAvailable = $True $Settings.Hidden = $False $Task.Principal.RunLevel = 1 $RootFolder = $Scheduler.GetFolder("\") $RootFolder.RegisterTaskDefinition($TaskName, $Task, 6, $Null, $Null, 3) $Task1 = $Scheduler.NewTask(0) [string]$TaskName1 = "StartVM" $RegistrationInfo = $Task1.RegistrationInfo $RegistrationInfo.Description = $TaskName1 $RegistrationInfo.Author = $User.Name $Action = $Task1.Actions.Create(0) $Action.Path = $startvm $Triggers = $Task1.Triggers.Create(9) $Settings = $Task1.Settings $Settings.Enabled = $True $Settings.StartWhenAvailable = $True $Settings.Hidden = $False $Task.Principal.RunLevel = 1 $RootFolder = $Scheduler.GetFolder("\") $RootFolder.RegisterTaskDefinition($TaskName1, $Task1, 6, $Null, $Null, 3)
function Get-ScriptDirectory { Split-Path -Parent $PSCommandPath } function Check-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { return $true } else { return $false } } $pt = Get-ScriptDirectory $arg = "-exec bypass -WindowStyle Hidden -file " + $PSCommandPath if(-not (Check-IsElevated)) { Start-Process "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ArgumentList $arg -Verb runAs -Wait return } $Evcemqx = Get-Service | Where-Object { $_.Name -eq "emqx" } if ($Evcemqx.Length -gt 0) { $emqxcmd = Join-Path -Path $pt -ChildPath "emqx\bin\emqx.cmd" Start-Process $emqxcmd "uninstall" -Wait -WindowStyle Hidden } $User = [Security.Principal.WindowsIdentity]::GetCurrent() $Scheduler = New-Object -ComObject Schedule.Service $Scheduler.Connect($env:COMPUTERNAME) $Task = $Scheduler.NewTask(0) [string]$TaskName = "StartHook" [string]$TaskName1 = "StartVM" $RootFolder = $Scheduler.GetFolder("\") try { $Task = $RootFolder.GetTask($TaskName) $RootFolder.DeleteTask($TaskName, 0) } catch [System.Exception] { } catch { } try { $Task = $RootFolder.GetTask($TaskName1) $RootFolder.DeleteTask($TaskName1, 0) } catch [System.Exception] { } catch { }