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

时间:2018-12-10 10:55:01

标签: powershell

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

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

DBAPIError: (pyodbc.Error) ('01S00', '[01S00] [Microsoft][ODBC Driver Manager] Invalid connection string attribute (0) (SQLDriverConnect)')

1 个答案:

答案 0 :(得分:2)

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 ...

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

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

相关问题