我目前正在尝试编写脚本(powershell)在 Azure DevTest Lab 中托管的 VM 上自动安装 Visual Studio 2017。脚本本身非常简单,即
try
{
Invoke-WebRequest -Uri $vs2017Url -OutFile $vs2017Exe;
}
catch
{
Write-Error "Failed to download VS 2017";
}
try
{
Start-Process -FilePath $vs2017Exe -ArgumentList "--add Microsoft.VisualStudio.Workload.NetCoreTools;includeRecommended --passive";
}
catch
{
Write-Error "Failed to install VS 2017";
}
VS 安装 exe 的 URL 在哪里$vs2017Url
。问题是 VS 2017 exe 启用了 UAC,这使得自动化变得困难,因为它会抛出 UAC 对话框“您是否要允许此应用更改您的设备?”,从而需要用户干预。有没有办法解决这个问题?(虚拟机将使用 Azure 的工件Azure 中的功能)
答案1
当涉及到脚本和远程安装时,UAC 是一场真正的噩梦。我认为这与 UAC 对其他进程产生的进程的反应方式有关。即使父进程是经过批准的管理员,UAC 也可能会造成麻烦。
显而易见的是:您的 PowerShell 进程需要以管理员身份运行:)
根据配置,以下其中一种可能有效:
- 运行安装程序行政人员用户。当用户名是管理员时,UAC 似乎比恰好属于管理员组的其他帐户更宽容。我认为这个概念被称为管理员批准模式。
- 禁用 UAC。重新启动以使更改生效。进行必要的设置和管理更改。重新启用 UAC 并重新启动。John Clan 在他的博客中记录了如何通过 PowerShell 更改 UAC 设置