在工作站解锁时执行的语法

Son*_*Dre 2 powershell

我有一个创建计划任务的脚本,我需要它在“工作站解锁”上运行,但我找不到它的语法。

我的意图是做类似的事情:

(New-ScheduledTaskTrigger -whatDoiWriteHere).
Run Code Online (Sandbox Code Playgroud)

Jer*_*ert 7

New-ScheduledTaskTrigger不支持此特定触发器类型 ( MSFT_TaskSessionStateChangeTrigger)。幸运的是,它只是现有 CIM 类的包装器,您仍然可以直接使用它们:

$stateChangeTrigger = Get-CimClass `
    -Namespace ROOT\Microsoft\Windows\TaskScheduler `
    -ClassName MSFT_TaskSessionStateChangeTrigger

$onUnlockTrigger = New-CimInstance `
    -CimClass $stateChangeTrigger `
    -Property @{
        StateChange = 8  # TASK_SESSION_STATE_CHANGE_TYPE.TASK_SESSION_UNLOCK (taskschd.h)
    } `
    -ClientOnly

$task = New-ScheduledTask -Trigger $onUnlockTrigger -Action ...

Register-ScheduledTask -InputObject $task ...
Run Code Online (Sandbox Code Playgroud)

通过在 Task Scheduler 中手动创建模板任务,然后使用Get-ScheduledTask它并检查其属性,您可以轻松地获取所需的值。

有趣的是,由于ScheduledTaskscmdlet 仅使用 CDXML 元数据(没有显式代码)定义,因此扩展模块以支持这些类型应该相对容易。不过,我还没有进一步研究。