Roa*_*oan 3 powershell powershell-5.0
在 Windows 事件 ID 上使用 New-ScheduledTaskTrigger 注册 ScheduledTask
堆栈溢出的用户大家好。MSDN 和 Google 都没有产生结果...
我通过 Powershell 脚本配置了几个计划任务。计划任务设置为在特定时间运行。
这一切都很好。但我需要配置另一个计划任务,该任务在 Windows 事件记录器中记录某个事件 ID 时运行。
我当然可以手动设置它,但我希望它作为我的自动化脚本的一部分。
这是我迄今为止用于计划任务的代码,我需要替换$Trigger= New-ScheduledTaskTrigger -At 4:00am -Daily部分:
Copy-Item "\\networkDrive\Backups\scripts\Reset-Sessions.ps1" "c:\scripts\Reset-Sessions.ps1"
$Trigger= New-ScheduledTaskTrigger -At 4:00am -Daily
$User= 'Nt Authority\System'
$Action= New-ScheduledTaskAction -Execute "Powershell.exe" -Argument "-executionpolicy bypass -File c:\scripts\Reset-Sessions.ps1"
Register-ScheduledTask -TaskName "Reset-Sessions" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
Run Code Online (Sandbox Code Playgroud)
为了在线目的,我更改了一些目录和文件名。
如果有人可以引导我走向正确的方向或帮助举例,我将不胜感激。
我宁愿只更改 $Trigger 部分而不重写整个脚本,但如果不可能的话我会理解。
我使用 Powershell 版本 5.1。
$taskname="Reset-Sessions"
# delete existing task if it exists
Get-ScheduledTask -TaskName $taskname -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
# get target script based on current script root
$scriptPath=[System.IO.Path]::Combine($PSScriptRoot, "Reset-Sessions.ps1")
# create list of triggers, and add logon trigger
$triggers = @()
$triggers += New-ScheduledTaskTrigger -AtLogOn
# create TaskEventTrigger, use your own value in Subscription
$CIMTriggerClass = Get-CimClass -ClassName MSFT_TaskEventTrigger -Namespace Root/Microsoft/Windows/TaskScheduler:MSFT_TaskEventTrigger
$trigger = New-CimInstance -CimClass $CIMTriggerClass -ClientOnly
$trigger.Subscription =
@"
<QueryList><Query Id="0" Path="Microsoft-Windows-NetworkProfile/Operational"><Select Path="Microsoft-Windows-NetworkProfile/Operational">*[System[(EventID=4004)]]</Select></Query></QueryList>
"@
$trigger.Enabled = $True
$triggers += $trigger
# create task
$User='Nt Authority\System'
$Action=New-ScheduledTaskAction -Execute "Powershell.exe" -Argument "-ExecutionPolicy bypass -File $scriptPath"
Register-ScheduledTask -TaskName $taskname -Trigger $triggers -User $User -Action $Action -RunLevel Highest -Force
Run Code Online (Sandbox Code Playgroud)
主要的魔力是用来Get-CimClass获取正确的实例,然后Subscription从Get-ScheduledTask "Tmp" | Select -ExpandProperty Triggers
| 归档时间: |
|
| 查看次数: |
10708 次 |
| 最近记录: |