本帖最后由 sitieqiang 于 2026-6-23 11:06 编辑
由于内网无法联网但是仍让需要使用vscode,但是安装插件就是一个问题。不少的软件都可以在https://open-vsx.org/下载,但是https://open-vsx.org/收录的任然不全,因此写了个powershell脚本给出marketplace的地址后直接转化成下载的地址并且下载插件
[PowerShell] 纯文本查看 复制代码
# download-vsix.ps1
param(
[Parameter(Mandatory=$true)]
[string]$Url
)
# 从 Marketplace URL 提取 publisher 和 extension name
# 支持格式: https://marketplace.visualstudio ... publisher.extension
# https://marketplace.visualstudio.com/items/publisher.extension
if ($Url -match 'itemName=([^&]+)' -or $Url -match '/items/([^?&/]+)') {
$itemName = $Matches[1]
} else {
Write-Error "无法解析 URL,请确认是 Marketplace 插件页面地址"
exit 1
}
if ($itemName -notmatch '^(.+)\.([^.]+)$') {
Write-Error "无法解析 publisher 和 extension: $itemName"
exit 1
}
$publisher = $Matches[1]
$extension = $Matches[2]
Write-Host "Publisher : $publisher"
Write-Host "Extension : $extension"
# 查询最新版本号
$apiUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery"
$body = @{
filters = @(@{
criteria = @(@{
filterType = 7
value = "$publisher.$extension"
})
})
flags = 529
} | ConvertTo-Json -Depth 10
try {
$resp = Invoke-RestMethod -Uri $apiUrl -Method Post -Body $body `
-ContentType "application/json" `
-Headers @{ Accept = "application/json;api-version=7.2-preview.1" }
$version = $resp.results[0].extensions[0].versions[0].version
} catch {
Write-Error "查询版本失败: $_"
exit 1
}
Write-Host "Version : $version"
# 拼下载地址
$downloadUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/$publisher/vsextensions/$extension/$version/vspackage"
$outFile = "$publisher.$extension-$version.vsix"
Write-Host "下载地址 : $downloadUrl"
Write-Host "保存文件 : $outFile"
Write-Host ""
# 下载
try {
Invoke-WebRequest -Uri $downloadUrl -OutFile $outFile -UseBasicParsing
Write-Host "✅ 下载完成: $outFile"
} catch {
Write-Error "下载失败: $_"
exit 1
}
使用方式
# 直接运行
.\download-vsix.ps1 "https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd"
# 或者另一种 URL 格式也支持
.\download-vsix.ps1 "https://marketplace.visualstudio.com/items/ms-vscode.cpptools"
|