Я пытаюсь выполнить SysPrep виртуальную машину в Azure через Azure конвейеры DevOps YAML. В том же конвейере (предыдущий этап) я развертываю виртуальную машину с помощью шаблонов Azure Resource Manager (ARM) и копирую сценарии и файлы на машину. Я хочу автоматизировать весь процесс, поэтому подключение RDP к машине невозможно. Когда я запускаю SysPrep на виртуальной машине, я получаю следующее сообщение об ошибке:
##[error]The remote session query failed for <insertMyFQDN>.eastus.cloudapp.azure.com with the following error message: Access is denied.
Из моего репо у меня есть несколько файлов, включая сценарий PowerShell, который SysPreps the machine (sysPrepvm.ps1) - взят from Запускать SysPrep удаленно с помощью команд из Azure powershell . Скрипт работает, когда я вхожу в систему и запускаю его вручную.
sysPrepvm.ps1
$sysPrepPath = 'C:\Windows\System32\Sysprep\Sysprep.exe'
$arguments = '/generalize /oobe /shutdown /quiet'
Invoke-Command -ScriptBlock {param($sysPrepPath,$arguments) Start-Process -FilePath $sysPrepPath -ArgumentList $arguments} -ArgumentList $sysPrepPath,$arguments
Я использую встроенную задачу в Azure DevOps, «Powershell на целевых машинах», с помощью которого я могу вызывать другие команды или сценарии, поэтому я уверен, что задача работает.
Моя сцена в конвейере YAML выглядит следующим образом :
- stage:
displayName: SysPrep
variables:
azFQDN: $[stageDependencies.Connect.connect.outputs['SetEnvVars.azFQDN']]
jobs:
- job: SysPrepVhD
steps:
- task: PowerShellOnTargetMachines@3
inputs:
Machines: '$(azFQDN)' # FQDN on the machine
UserName: '$(adminUser)'
UserPassword: '$(adminPw)'
ScriptType: 'FilePath'
ScriptPath: 'C:\Windows\System32\Sysprep\fishtank\sysPrepvm.ps1'
Есть ли ограничение на удаленный запуск? Мне пока не удалось найти обходной путь, поэтому я очень благодарен за любой ответ.
Edit
Я также пробовал запускать скрипт с -Verb RunAs, как встроенный скрипт вместо File, а также попробовал принятый ответ в предыдущем посте:
Sysprep an Azure VM с помощью задачи PowerShell в конвейере