【发布时间】:2016-04-25 16:59:07
【问题描述】:
为了减轻我的一些工作,我创建了一个 powershell 脚本,它需要:
- 在启动时运行。
- 以管理员权限运行,因为它必须写入 c:\program 文件夹。
我像这样使用 powershell 创建了启动服务:
function MakeStartupService
{
Write-Host "Adding script as a startup service"
$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:15
Try
{
Register-ScheduledJob -Trigger $trigger -FilePath "absolute_path" -Name "Job-name" -EA Stop
}
Catch [system.exception]
{
Write-Host "Looks like an existing startup service exists for the same. Overwriting existing job"
Unregister-ScheduledJob "Job-name"
Register-ScheduledJob -Trigger $trigger -FilePath "absolute_path" -Name "Job-name"
}
}
作业已成功注册为启动服务,并且在任务调度程序中可见。如果我使用Start-Job -DefinitionName Job-name 或从任务计划程序中右键单击启动它,它可以正常工作,但它不会在 Windows 启动时启动。
目前我正在我的个人 Windows 10 系统上对此进行测试,并已签入另一个 Windows 10 系统,但行为仍然是名称。我正在附上此作业的任务计划程序窗口的屏幕截图。
对不起,如果这个问题听起来重复或愚蠢(我是 powershell 的初学者),但相信我,我在网上找到的解决方案都没有解决这个问题。
提前致谢!!
【问题讨论】:
-
如果勾选“以最高权限运行”会怎样?
-
即使这样也行不通
-
尝试从您的作业触发器中删除 -RandomDelay 参数。只需使用 -AtStartup 看看它是否有效。
-
您是否对 ScheduledTask 开放而不是 ScheduledJob?作业可以以 SYSTEM 而不是您的用户帐户运行吗?如果是这样,我相信我有适合您的解决方案。
-
我的答案在这里被删除,因为它是相同的。所以,我只能建议看看我的答案here,因为它确实在做这件事。
标签: windows powershell startup