Некоторые картинки не загружаются из РФ и РК, используйте VPN.

понедельник, 4 сентября 2023 г.

CMD/Posh create scheduled tasks with trigger on logon

СБИС по прежнему не умеет запускать плагин с remoteapp, а мне уж порядком поднадоело ручками создавать задачу в планировщике. Я попробовал сделать задачу при помощи CMD:

set "nameuser=%USERDOMAIN%\%username%"
set "nametask=SBIS Plugin %nameuser%"
schtasks /create /sc ONLOGON /ru %nameuser% /it /tn "%nametask%" /tr "C:\PROGRA~2\TENSOR~1\SBIS3Plugin\sbis3plugin.exe --autostart"

И потерпел фиаско по двум пунктам

  1. schtasks требует прав админа на добавление задачи, а как мы помним задача должна запускаться от имени того, кто вошел в систему
  2. любая добавленная задача через cmd с параметром /sc ONLOGON будет иметь триггер "При входе любого пользователя". Параметр /it в данном случае ничего не решает. Задача выполнится, но для любого пользователя (проверено)
Вариант с XML также не подходит, так как в Principals->Principal->UserId помещается ID пользователя, от чьего имени надо запускать задачу. Да, это можно сделать, но средствами CMD это пустая трата времени.
Промежуточный вариант создать в cmd, экспорт в XML, правка, импорт также не рассматривается из-за громоздкости решения.
В итоге было решено использовать PowerShell и получился вот такой короткий скрипт:
$name = Read-Host -Prompt "Enter your name"
$TaskName = "SBIS PLUGIN for $name"
$username ="$env:USERDOMAIN\$name"
 
#create a scheduled task with powershell
$Action = New-ScheduledTaskAction -Execute "C:\PROGRA~2\TENSOR~1\SBIS3Plugin\sbis3plugin.exe" -Argument "--autostart"
$Trigger = New-ScheduledTaskTrigger -AtLogOn -User $username

Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -User $username 

Ничего лишнего, только запрос имени пользователя, домен вытаскивается текущий

Стоит отметить, что параметр --autostart не обязателен

Комментариев нет:

Отправить комментарий