启动windows服务(topshelf)失败

问题描述 投票:0回答:1

我正在尝试在 azure 虚拟机中安装并启动 Windows 服务,但启动步骤失败。

以下是管道任务:

- task: jabbera.windows-service-release-tasks.install-topshelf-service-task.InstallTopshelfService@8
  displayName: 'Install a Topshelf Service'
  inputs:
    TopshelfExePaths: '${{ parameters.svcDir}}\${{ parameters.svcAssemblyName }}.exe'
    specialUser: localsystem
    ServiceName: '${{ parameters.svcName}}'
    StartupType: autostart
    KillMmcTaskManager: true
    deploymentGroup: true


 - task: jabbera.windows-service-release-tasks.start-windows-service-task.StartWindowsService@8
   displayName: 'Start Windows Service'
   inputs:
       ServiceNames: '${{ parameters.svcName}}'
       deploymentGroup: true

启动失败并出现以下错误:

##[错误]无法找到类型 [VstsTaskSdk.TerminationException]。 2024-05-08T09:54:34.2331237Z ##[错误]从进程返回退出代码1:文件名'C:\ Windows \ System32 \ WindowsPowerShell 1.0 \ powershell.exe',参数'-NoLogo -Sta -NoProfile -Non ***nteractive -ExecutionPolicy Unrestricted -Command ". ([scriptblock]::Create('if ([Console]::***nputEncoding -is [Text.UTF8Encoding] -and [Console]::***nputEncoding. GetPreamble().Length -ne 0) { [控制台]::nputEncoding = New-Object Text.UTF8Encoding $false } if (!$PSHOME) { $null = Get-tem -LiteralPath ''variable:PSHOME '' } else { ***mport-Module -Name ([System.***O.Path]::Combine($PSHOME, ''Modules\Microsoft.PowerShell.Management\Microsoft.PowerShell.Management.psd1'' )) ; ***导入模块-名称 ([System.***O.Path]::Combine($PSHOME, ''Modules\Microsoft.PowerShell.Utility\Microsoft.PowerShell.Utility.psd1'')) }')) 2>&1 | ForEach-Object { Write-Verbose $_.Exception.Message -Verbose } ; 导入模块-名称 'C: zagent\A1_work_tasks\StartWindowsService_bf65dd9d-18cb-40d9-9254-f3ac527428ef\ 8.0.0\ps_modules\VstsTaskSdk\VstsTaskSdk.psd1' -ArgumentList @{ Nonnteractive = $true } -ErrorAction Stop ; $VerbosePreference = '静默继续' ; $DebugPreference = '静默继续' ; ***nvoke-VstsTaskScript -ScriptBlock ([scriptblock]::Create('. ''C: zagent\A1_work_tasks\StartWindowsService_bf65dd9d-18cb-40d9-9254-f3ac527428ef\8.0.0\StartWindowsService.ps1'''))" '.

Github 链接:https://github.com/jabbera/my-vsts-tasks

我尝试用 powershell 任务替换它:

- powershell: |
    $serviceName = '${{ parameters.serviceName }}'
    $serviceStatus = Get-Service -Name $serviceName
    if ($serviceStatus.Status -eq 'Running') {
        Write-Host "Service '$serviceName' is already running."
    } elseif ($serviceStatus.Status -eq 'Stopped') {
        Start-Service -Name $serviceName
        Write-Host "Service '$serviceName' started successfully."
    } else {
        Write-Host "Service '$serviceName' is in an unexpected state: $($serviceStatus.Status)"
    }
  condition: ${{ parameters.startService }}
  displayName: 'Start Windows Service'

但这失败了:

Start-Service:由于以下错误,服务“MyService”无法启动:无法 2024-05-08T14:25:47.7248406Z 在计算机“.”上启动服务 MyService。 2024-05-08T14:25:47.7250339Z 在 C: zagent\A1_work_temp d2155f7-3687-4ce8-ab8e-fbf42272de9d.ps1:9 字符:5 2024-05-08T14:25:47.7252117Z + 启动服务-名称 $serviceName 2024-05-08T14:25:47.7253589Z + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2024-05-08T14:25:47.7255675Z + 类别nfo:OpenError:(System.ServiceProcess.ServiceController:ServiceController)[启动服务],
2024-05-08T14:25:47.7257458Z 服务命令异常 2024-05-08T14:25:47.7259190Z + ExcellentQualifiedError
d:CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand 2024-05-08T14:25:47.7260730Z
2024-05-08T14:25:47.7300363Z ##[错误]PowerShell 退出,代码为“1”。 2024-05-08T14:25:47.7904871Z ##[section]整理:启动Windows服务:MyService

powershell azure-pipelines windows-services cicd topshelf
1个回答
0
投票

从您提供的日志来看,您似乎正在使用自托管 Windows 代理来运行管道作业。

您可以检查以下事项来解决问题:

  1. 使用您的帐户登录安装了自托管代理的Windows计算机。

  2. 尝试手动执行相关命令安装并启动Topshelf服务。如果您的帐户也无法安装和启动服务,则可能需要管理员帐户才能执行操作。

  3. 搜索服务并打开它。找到正在运行的代理服务。右键单击打开其属性。在“

    Log On
    ”选项卡上,检查代理服务是否设置为使用默认的Windows内置帐户“
    NT AUTHORITY\NETWORK SERVICE
    ”登录机器。如果是这样,该帐户可能没有在计算机上安装和启动服务的权限。您可以尝试配置代理服务以使用管理员帐户或您的帐户(如果您有执行操作的权限)登录计算机。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.