Sysprep Azure ВМ с удаленной оболочкой PowerShell - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь выполнить 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 в конвейере

1 Ответ

0 голосов
/ 05 августа 2020

Мне удалось найти способ использовать вместо этого расширение Custom Script Extension. Сначала я не думал об этом, так как шаблон ARM, который я использую, уже имеет расширение пользовательского сценария на машине, чтобы включить WinRM, и не может иметь несколько расширений пользовательского сценария, установленных одновременно. Кроме того, я не хотел запускать SysPrep сразу после загрузки машины, потому что сначала нужно было запустить другие сценарии и настройки. В моем конвейере YAML мне удалось удалить существующий, чтобы повторно развернуть новое расширение пользовательского сценария с включенным сценарием.

Я разместил все решение на GitHub - https://github.com/Crytlig/azsysprep - для всех в заинтересованном. Очевидно, его нужно немного почистить, но он работает как есть.

...