Emi*_*cia 5 windows powershell administrator scheduled-tasks command-line
我有一个只能在当前用户下获得许可的软件,并且我需要在我不知道谁将登录的实验室计算机上使用它。我有一个在用户的任务计划程序中运行的脚本每次都可以许可软件的登录,但我不希望每次用户登录时都启动它(该脚本需要一个弹出窗口,所以它是在你面前并且不是一个很好的用户体验,特别是对于那些不这样做的人甚至不打算使用该软件)。我需要任务计划程序,因为它允许我使用 运行 PowerShell 脚本-ExecutionPolicy Bypass,而不提示用户输入管理员凭据。
我想要的是一个可以手动触发任务的快捷方式,这样用户就可以决定是否要许可该软件。不幸的是,它并没有发挥作用。
我用 target: 创建了一个快捷方式C:\Windows\System32\schtasks.exe /run /tn DBCLicenser,其中DBCLicenser是我的任务名称。当我尝试运行快捷方式时,没有任何反应。在命令提示符中运行它,我看到错误:ERROR: Access is denied
在提升的命令提示符中运行快捷方式成功,但我们的用户不是管理员,因此这不是一个选项。
这里要明确的是,当任务触发器设置为用户登录时,任务会成功运行。我已确保在任务设置中选中“以最高权限运行”和“允许任务按需运行”。
用户似乎没有触发任务的权限。我尝试过手动添加权限C:\Windows\System32\Tasks\%%mytask%%,但此修复似乎在 Windows 10 中不再有效。
我在评论部分找到了一个脚本,它为我解决了这个问题。我所要做的就是插入我的任务名称(例如[...].GetTask("myTask")),运行一次,然后一切都按照我想要的方式进行。
$scheduler = New-Object -ComObject "Schedule.Service"
$scheduler.Connect()
$task = $scheduler.GetFolder("").GetTask("")
$sec = $task.GetSecurityDescriptor(0xF)
$sec = $sec + '(A;;GRGX;;;AU)'
$task.SetSecurityDescriptor($sec, 0)
Run Code Online (Sandbox Code Playgroud)
谢谢格鲁比。
| 归档时间: |
|
| 查看次数: |
4646 次 |
| 最近记录: |