PowerShell中如何通过Get-Member深入查看Get-ScheduledTask的Actions属性
PowerShell 计划任务 Actions 属性探查方案(适配IR场景)
核心探查方法
1. 直接属性调用(批量排查最高效)
你当前用的Select-Object -ExpandProperty是可用的,批量遍历场景下可以直接通过属性链式访问,不需要额外展开:
# 直接获取所有计划任务的Actions全量内容 (Get-ScheduledTask).Actions
做恶意特征筛选时可以直接把Actions属性作为筛选条件,适合快速定位风险任务:
# 示例:排查执行cmd、mshta、powershell且参数带远程地址的可疑任务 Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'cmd\.exe|mshta\.exe|powershell\.exe' -and $_.Actions.Arguments -match 'http|ftp|\.hta|\.ps1' }
2. 查看Actions完整结构定义
如果需要明确Actions属性的所有可用字段、类型,不用依赖单个任务的返回结果,可以直接查询对应的CIM类定义:
# 查询计划任务Action对应的CIM类完整结构 Get-CimClass -ClassName MSFT_TaskAction -Namespace Root/Microsoft/Windows/TaskScheduler
输出会包含所有类型Action(执行程序、发邮件、弹消息等)的全量属性定义,比Get-Member返回的信息更完整。
3. 结构化导出(适配自动化处理/证据留存)
开发清理脚本前,建议先导出全量任务数据留存溯源证据,可直接用计算属性把Actions字段拆解成独立列导出:
# 导出所有计划任务核心信息+Action明细到CSV留存 Get-ScheduledTask | Select-Object TaskName, TaskPath, State, Author, CreationDate, @{Name='ActionExecute';Expression={$_.Actions.Execute}}, @{Name='ActionArguments';Expression={$_.Actions.Arguments}}, @{Name='ActionWorkingDir';Expression={$_.Actions.WorkingDirectory}} | Export-Csv -Path C:\IR\Scheduled_Tasks_Backup.csv -NoTypeInformation -Encoding UTF8
IR场景自动化清理注意事项
- 清理前先禁用任务再执行删除,避免恶意任务触发自保机制重新生成
- 单任务包含多个Action时,
$_.Actions为数组,遍历处理时要循环覆盖每个Action - 高风险任务清理前导出原始XML配置留证:
Export-ScheduledTask -TaskName 目标任务名 -TaskPath 任务路径 > task_backup.xml
内容的提问来源于stack exchange,提问作者Origami
相关产品推荐
相关产品推荐

