我正试图通过Azure SysPrep DevOps YAML管道在Azure中使用VM。在同一管道(上一阶段)中,我通过Azure资源管理器(ARM)模板部署VM,并将脚本和文件复制到机器上。我想要自动化的整个过程,所以RDP‘入机器不是一个选项。当我在VM上运行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)是从Run SysPrep remotely through commands from 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'远程运行有限制吗?我还没有找到解决办法,所以任何答案都是非常感谢的。
编辑
我还尝试使用-Verb RunAs作为内联脚本而不是文件运行脚本,并在上一篇文章中尝试了接受的答案:
发布于 2020-08-05 17:08:59
我设法找到了一种使用自定义脚本扩展的方法。我一开始没有想过这样做,因为我使用的ARM模板已经在机器上有一个自定义脚本扩展来启用WinRM,并且不能同时安装多个自定义脚本扩展。而且,我不想在机器启动时立即执行SysPrep,因为它必须首先运行其他脚本和设置。在YAML管道中,我成功地删除了现有的脚本,以便重新部署包含脚本的新自定义脚本扩展。
我在GitHub - https://github.com/Crytlig/azsysprep上发布了整个解决方案,供任何感兴趣的人使用。它显然需要一些清洁,但它的工作原理。
https://stackoverflow.com/questions/63253206
复制相似问题