You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows 10任务计划程序的锁屏/解锁触发事件中向PowerShell脚本传递PC名称与用户名参数

如何在Windows 10任务计划程序的锁屏/解锁触发事件中向PowerShell脚本传递PC名称与用户名参数

我之前也碰到过类似的需求,刚好可以分享下可行的方案——其实不需要在任务计划里手动传递参数,我们可以通过脚本直接获取目标信息,或者从系统事件日志里提取触发事件的详情,下面分步骤说明:

一、配置任务计划程序的触发条件

  1. 打开「任务计划程序」,点击右侧「创建任务」:
    • 常规选项卡:给任务起个名字(比如“工作站状态监控”),勾选「使用最高权限运行」(读取安全日志需要权限),选择「只有在用户登录时运行」
    • 触发器选项卡:点击「新建」,在「开始任务」下拉框里选择「工作站锁定」,点击确定;再新建一个触发器,选择「工作站解锁」,这样两种事件都会触发任务
    • 操作选项卡:点击「新建」,「程序/脚本」填powershell.exe,「添加参数」填-File "C:\你的脚本路径\WorkstationMonitor.ps1"(注意替换成你实际的脚本路径)

二、编写PowerShell脚本获取PC名称与操作用户

这里有两种可靠的方式获取所需参数:

方式1:直接读取系统环境变量(适合单用户场景)

如果你的机器一般只有单个用户使用,脚本可以直接读取系统内置的环境变量来获取信息:

# 获取计算机名称
$pcName = $env:COMPUTERNAME
# 获取当前登录的用户名(锁屏/解锁操作的发起用户)
$userName = $env:USERNAME

# 这里添加你需要的业务逻辑,比如记录日志
"$(Get-Date): 计算机[$pcName] 被用户[$userName] $(if ($MyInvocation.MyCommand.Name) { 
    # 结合事件日志补全操作状态
    $event = Get-WinEvent -FilterHashtable @{LogName='Security';ID=4800,4801} -MaxEvents 1
    if ($event.Id -eq 4800) { "锁定" } else { "解锁" }
})" | Out-File "C:\Logs\WorkstationLog.txt" -Append

方式2:从安全日志提取触发事件的详情(适合多用户共用机器场景)

如果是多人共用一台机器,比如用户A锁屏,用户B解锁,需要精准获取触发对应事件的用户,就需要读取系统安全日志的事件记录:

# 筛选最新的工作站锁定(ID4800)/解锁(ID4801)事件
$latestEvent = Get-WinEvent -FilterHashtable @{
    LogName = 'Security'
    ID = 4800, 4801
} -MaxEvents 1 -ErrorAction SilentlyContinue

if ($latestEvent) {
    $pcName = $latestEvent.MachineName
    # 事件的第二个属性值就是操作的用户名
    $userName = $latestEvent.Properties[1].Value
    $actionType = if ($latestEvent.Id -eq 4800) { "锁定" } else { "解锁" }

    # 执行你的业务逻辑,比如输出日志或发送通知
    Write-Host "[$(Get-Date)] 计算机 $pcName 被用户 $userName 执行了$actionType操作"
} else {
    Write-Warning "未找到最近的工作站锁定/解锁事件记录"
}

三、注意事项

  • 确保脚本路径和日志路径(如果用到)的权限设置正确,任务执行的用户有权限读取和写入
  • 如果任务执行后看不到控制台输出,可以在脚本里把输出写入文件,方便排查问题
  • 测试时可以手动锁屏/解锁,然后查看任务计划程序的「历史记录」选项卡,确认任务是否正常触发

备注:内容来源于stack exchange,提问作者CAIB-scay-lact

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:37:59