我正在使用powershell尝试在我们的构建代理上自动化一些构建工具更新/安装Visual Studio 2022构建工具。在UI中,我需要以下3个选项:
sql server build tools
我从第一台服务器上导出了配置,在那里我手动安装了这个,这样我就可以得到要安装的项目的ID:
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Component.Roslyn.Compiler",
"Microsoft.Component.MSBuild",
"Microsoft.VisualStudio.Component.CoreBuildTools",
"Microsoft.VisualStudio.Workload.MSBuildTools",
"Microsoft.Net.Component.4.7.2.TargetingPack",
"Microsoft.Net.Component.4.8.TargetingPack",
"Microsoft.VisualStudio.Component.SQL.SSDTBuildSku"
]
}
我使用底部的3个sku创建脚本来尝试安装它:
$components =@(
"Microsoft.Net.Component.4.7.2.TargetingPack",
"Microsoft.Net.Component.4.8.TargetingPack",
"Microsoft.VisualStudio.Component.SQL.SSDTBuildSku")
$components | %{Start-Process "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList 'modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools" --passive --add $_' -Wait -PassThru}
我知道这会通过UI提示重新启动,但是我在安装后重新启动了,它没有显示这些已经安装。除了下面的输出,我没有得到任何关于成功或失败的确认,尽管我看到UI弹出了一小段时间,因为我没有指定silent:
script output
我做错了什么?
2条答案
按热度按时间olmpazwi1#
将
-ArgumentList
中的引号换成外部双引号和内部单引号。单引号内不会出现插值,因此$_
不会展开。bwitn5fc2#
按照Metzli_Tonaltzintli的说法,我尝试了其他方法,用双引号将下载位置括起来并将其转义。
当我这样做的时候,UI弹出,实际上显示了下载状态,并在之后立即重新启动。