gpt4 book ai didi

windows - Powershell 使用 ScheduledJob 在启动时以管理员权限运行作业

转载 作者:可可西里 更新时间:2023-11-01 12:19:17 25 4
gpt4 key购买 nike

为了简化我的一些工作,我创建了一个 powershell 脚本,它需要:

  1. 在启动时运行。
  2. 以管理员权限运行,因为它必须写入 c:\program files 文件夹。

我像这样使用 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 或通过右键单击 Task Scheduler 启动它,它工作正常,但它不会在 Windows 启动时启动。

目前,我正在我个人的 Windows 10 系统上对此进行测试,并在另一个 Windows 10 系统中进行了检查,但该行为仍然存在。我附上了这项工作的任务调度程序窗口的屏幕截图。 enter image description here

很抱歉,如果这个问题听起来重复或愚蠢(我是 powershell 的初学者),但相信我,我在网上找到的解决方案都没有解决这个问题。

提前致谢!!

最佳答案

这是我已经在生产中使用的代码。如果它对您不起作用,则您的系统一定有其他问题。

function Invoke-PrepareScheduledTask
{
$taskName = "UCM_MSSQL"
$task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue
if ($task -ne $null)
{
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
}

# TODO: EDIT THIS STUFF AS NEEDED...
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-File "C:\Invoke-MYSCRIPT.ps1"'
$trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay 00:00:30
$settings = New-ScheduledTaskSettingsSet -Compatibility Win8

$principal = New-ScheduledTaskPrincipal -UserId SYSTEM -LogonType ServiceAccount -RunLevel Highest

$definition = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings -Description "Run $($taskName) at startup"

Register-ScheduledTask -TaskName $taskName -InputObject $definition

$task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue

# TODO: LOG AS NEEDED...
if ($task -ne $null)
{
Write-Output "Created scheduled task: '$($task.ToString())'."
}
else
{
Write-Output "Created scheduled task: FAILED."
}
}

关于windows - Powershell 使用 ScheduledJob 在启动时以管理员权限运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com