Я использую агенты AzureDevops для выполнения задачи powershell в среде Cloud Hosted, задача очень проста, она создает рабочую книгу и сохраняет ее:
try{
write-host 'initalized excel'
$Excel = New-Object -ComObject Excel.Application
write-host 'adding WB'
$Workbook = $Excel.Workbooks.Add()
write-host 'Saving Wb'
$Workbook.SaveAs('C:\test\test.xlsx')
}
finally{
write-host 'quitting excel'
$Excel.quit()
}
Вот вывод задачи Devops:
##[section]Starting: PowerShell Script
==============================================================================
Task : PowerShell
Description : Run a PowerShell script on Linux, macOS, or Windows
Version : 2.151.2
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell
==============================================================================
Generating script.
========================== Starting Command Output ===========================
##[command]"C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'C:\agent\_work\_temp\33ed6d09-53ba-427a-a7ac-ea425a98767c.ps1'"
initalized excel
adding WB
quitting excel
Exception from HRESULT: 0x800A03EC
At C:\agent\_work\_temp\33ed6d09-53ba-427a-a7ac-ea425a98767c.ps1:6 char:5
+ $Workbook = $Excel.Workbooks.Add()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
Вот что происходит, когда мой коллега подключен к виртуальной машине, на которой агент выполняет сценарий.Мой коллега подключен с помощью инструмента удаленного рабочего стола Windows.
Когда я подключен к виртуальной машине с использованием RDP, он работает нормально:
##[section]Starting: PowerShell Script
==============================================================================
Task : PowerShell
Description : Run a PowerShell script on Linux, macOS, or Windows
Version : 2.151.2
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell
==============================================================================
Generating script.
========================== Starting Command Output ===========================
##[command]"C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'C:\agent\_work\_temp\436b2d56-2a41-4f75-97bb-01d4c41407e6.ps1'"
initalized excel
adding WB
Saving Wb
quitting excel
##[section]Finishing: PowerShell Script
Мой коллега и я RDP к виртуальномумашина с тем же пользователем.
Мы пробовали на другой виртуальной машине с другим агентом devops, возникает та же проблема.
Я немного потерян, и я не знаю, как устранить эту проблемувообще, также, если у вас есть какие-либо другие предложения для названия, я приму любой совет.
Редактировать:
Мы также попытались поместить этот скрипт в цикл и написать, если онуспешно или неудачно, когда я выполняю rdp на виртуальной машине, он работает, если я отключаю его, он работает, как только мой коллега RDP подключается к виртуальной машине, он начинает отказывать, если я снова подключаюсь (таким образом, отключаю моего коллегу), он снова работает.(Мы RDP с одним и тем же пользователем)
Edit2: я получаю предложение об изменении от того, кто заметил меня, что:
Из комментария пользователя-> ', когда агентуже запускает и создает файлы Excel в цикле, тот простой факт, что мой коллега по rdp для vm нарушает создание файла Excel. 'Эта проблема, кажется, не имеет ничего общего с лазурными девопами.Причина проблемы в том, что rdp
Что ж, это также проблема с лазурным агентом devops, поскольку простой запуск сценария вручную работает для нас обоих.Это проблема RDP, из-за которой агент Devops не может использовать некоторые функции excel-powershell, поэтому я думаю, что тег Azure Devops по-прежнему точен