任务计划程序 Windows Server 2019 - 任务不是 运行 ONSTART

Task scheduler Windows Server 2019 - Task not running ONSTART

我正在尝试为 gitlab 运行ner 构建 AWS AMI 以构建我们的 .NET 应用程序。 我正在使用加壳器构建基于官方 Windows Server 2019 base AWS AMI 的图像。

我正在使用 WinRM,使用 HTTPS,没有更改任何密码。

以下是配置虚拟机的 powershell 命令:

"Creating desktop directory"
mkdir C:\Windows\SysWOW64\config\systemprofile\Desktop


"Installing ntrights tools"
mkdir tools
Invoke-WebRequest -Uri "https://download.microsoft.com/download/8/e/c/8ec3a7d8-05b4-440a-a71e-ca3ee25fe057/rktools.exe" -OutFile "tools\tools.exe" -UseBasicParsing

Start-Process "tools\tools.exe" -ArgumentList "/T:$pwd\tools\ /C" -Wait
Start-Process "msiexec.exe" -ArgumentList "/i $pwd\tools\rktools.msi /qn" -Wait

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

Remove-Item tools -Recurse

"Setting rights of service logon to $Env:WINRMUSER"
ntrights.exe ntrights +r SeServiceLogonRight -u $Env:WINRMUSER

# Git lab runner
$path = ".\gitlab-runner.exe"
If(!(test-path $path)) 
{
    "Downloading Gitlab Runner"
    Invoke-WebRequest -Uri "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-386.exe" -OutFile $path -UseBasicParsing
}

"Scheduling runner to start at startup of the system"
schtasks.exe /create /tn "Gitlab Runner service start" /RU $Env:WINRMUSER /RP `"$Env:WINRMPASS`" /Sc ONSTART /tr "powershell -Command $pwd\register-gitlabrunner.ps1 -ExecutionPolicy Bypass"

显然执行了更多脚本(安装 msbuild、安装 .net sdk 4.7.2、nugget 和 git)如果相关,我可以提供它们。在这里,我重点介绍我为 gitlab 运行ner 问题提出的 powershell 代码。

我希望虚拟机在启动时启动 运行ner,因此我们只需启动 AMI 实例即可纵向扩展。

进一步解释我所做的尝试:

我直接通过RDP连接尝试调试情况。

这是应该启动的脚本

Set-Location $PSScriptRoot
$path = ".\gitlab-runner.exe"

"Stopping runner"
Invoke-Expression "$path stop"

"Unregistering previous configuration"
Invoke-Expression "$path unregister --all-runners"

"Uninstalling runner"
Invoke-Expression "$path uninstall"

"Installing runner"
Invoke-Expression "$path install"

"Registering Gitlab Runner"
Invoke-Expression "$path register --non-interactive --url 'https://URL_HERE/' --registration-token 'TOKEN HERE' --executor shell"

"Starting the runner"
Invoke-Expression "$path start"

我只能在配置中使用用户名和密码安装 运行ner 一次,但这不是这里的问题,因为任务永远不会 运行s...

用我想到的回答问题谢谢:

很多文档和答案都告诉我,当您需要在启动或登录时启动脚本时,任务计划程序是您的最佳选择。 由于我一直使用带有 GUI 的 windows 服务器,任务计划程序直到现在都运行良好。也许我哪里做错了,也许没有。

无论如何,在尝试使用 powershell 命令创建任务后(有改进但没有足够的解决方案),我尝试将命令文件放入 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,但也没有用。

由于 this link

,文件看起来像这样
PowerShell -Command "Set-ExecutionPolicy Unrestricted"
PowerShell -Command "c:\Users\Administrator\register-gitlabrunner.ps1" >> c:\startup.log.txt

我试图将脚本的启动延迟到启动后 5 分钟。是为了测试它是否是网络初始化缓慢或其他问题。还是不行。

使用此方法在启动时启动脚本时,有些东西阻止脚本执行。

从那里我在我的 EC2 启动模板上添加了一个持久的“user_data”脚本,以便启动我在启动时所期望的。 有效

我觉得这不是最好的方法,因为我需要配置模板,不仅是 AMI,但至少它可以工作。

user_data 中的脚本如下所示:

<script>
    cmd /c "C:/ProgramData/Microsoft/Windows/Start Menu/Programs/StartUp/startup.cmd"
</script>
<persist>true</persist>

我在启动脚本中保留了安装和注册,因为当我使用帐户凭据 (--user --password) 通过 WinRM 安装 gitlab runner 时出现登录错误

我还是不明白这个问题是怎么回事。我猜这是用于启动脚本的帐户的问题(本地系统或类似的东西,这会与 gitlab runner 服务冲突)。 由于我没有GUI(文档大多在GUI上)而且时间有限,我暂时不会研究更多,至少暂时感觉足够了。

希望这可以帮助遇到同样情况的人