任务计划程序 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 实例即可纵向扩展。
进一步解释我所做的尝试:
- 您可以看到我正在尝试创建桌面目录,以便 windows 获得它可以 运行 交互的东西...不工作
- 我正在设置 SeServiceLogonRight 以避免“登录失败”错误
- 用户是Administrator,密码是正确的密码
- 计划任务已创建并准备就绪 运行。不会 运行 启动,不会 运行 如果我通过 schtasks /运行 启动它(最后的 运行 时间永远不会更新并显示 19XX 中的值)
- 尝试 cmd /c 任务命令,一切正常
- 我在任何地方都找不到任何日志,事件日志似乎没有来自应用程序、系统和 Powershell 的问题。 c:\Windows\Tasks\SchlogU 中的文件(或类似的文件)不存在(但文件夹存在)
- 我没有 UI 调度程序,我使用 windows 的精简版,所以我所能做的就是玩 schtasks.exe
- 默认文件夹是:c:\Users\Administrator
- powershell 脚本由打包程序推送到服务器,位于 c:\Users\Administrator(至于 gitlab-runner.exe)
我直接通过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上)而且时间有限,我暂时不会研究更多,至少暂时感觉足够了。
希望这可以帮助遇到同样情况的人
我正在尝试为 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 实例即可纵向扩展。
进一步解释我所做的尝试:
- 您可以看到我正在尝试创建桌面目录,以便 windows 获得它可以 运行 交互的东西...不工作
- 我正在设置 SeServiceLogonRight 以避免“登录失败”错误
- 用户是Administrator,密码是正确的密码
- 计划任务已创建并准备就绪 运行。不会 运行 启动,不会 运行 如果我通过 schtasks /运行 启动它(最后的 运行 时间永远不会更新并显示 19XX 中的值)
- 尝试 cmd /c 任务命令,一切正常
- 我在任何地方都找不到任何日志,事件日志似乎没有来自应用程序、系统和 Powershell 的问题。 c:\Windows\Tasks\SchlogU 中的文件(或类似的文件)不存在(但文件夹存在)
- 我没有 UI 调度程序,我使用 windows 的精简版,所以我所能做的就是玩 schtasks.exe
- 默认文件夹是:c:\Users\Administrator
- powershell 脚本由打包程序推送到服务器,位于 c:\Users\Administrator(至于 gitlab-runner.exe)
我直接通过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上)而且时间有限,我暂时不会研究更多,至少暂时感觉足够了。
希望这可以帮助遇到同样情况的人