-
-
Save azurekid/ca641c47981cf8074aeaf6218bb9eb58 to your computer and use it in GitHub Desktop.
[CmdletBinding()] | |
param | |
( | |
[Parameter(Mandatory = $true)] | |
[string] $Publisher, | |
[Parameter(Mandatory = $true)] | |
[string] $ExtensionName, | |
[Parameter(Mandatory = $true)] | |
[ValidateScript( { | |
If ($_ -match "^([0-9]+\.[0-9]+\.[0-9]+)$") { | |
$True | |
} | |
else { | |
Throw "$_ is not a valid version number. Version can only contain digits" | |
} | |
})] | |
[string] $Version, | |
[Parameter(Mandatory = $true)] | |
[string] $OutputLocation | |
) | |
Set-StrictMode -Version Latest | |
$ErrorActionPreference = "Stop" | |
Write-Output "Publisher: $($Publisher)" | |
Write-Output "Extension name: $($ExtensionName)" | |
Write-Output "Version: $($Version)" | |
Write-Output "Output location $($OutputLocation)" | |
$baseUrl = "https://$($Publisher).gallery.vsassets.io/_apis/public/gallery/publisher/$($Publisher)/extension/$($ExtensionName)/$($Version)/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage" | |
$outputFile = "$($Publisher)-$($ExtensionName)-$($Version).visx" | |
if (Test-Path $OutputLocation) { | |
try { | |
Write-Output "Retrieving extension..." | |
[uri]::EscapeUriString($baseUrl) | Out-Null | |
Invoke-WebRequest -Uri $baseUrl -OutFile "$OutputLocation\$outputFile" | |
} | |
catch { | |
Write-Error "Unable to find the extension in the marketplace" | |
} | |
} | |
else { | |
Write-Output "The Path $($OutputLocation) does not exist" | |
} |
Great script, @azurekid! I'd like to thank @paviad for modernizing it. Additionally, to allow for versions in the format of d+.d+.d+ (not just d.d.d), it's a good idea to change line 12 from If ($_ -match "^([0-9].[0-9].[0-9])") {
to If ($_ -match "^([0-9]+\.[0-9]+\.[0-9]+)$") {
.
I ran the script in Bash using the following command:
pwsh /home/user/scripts/script.ps1 -Publisher "GitHub" -ExtensionName "copilot" -Version "1.96.259" -OutputLocation "/home/user/downloads"
It worked flawlessly!
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${Publisher}/vsextensions/${ExtensionName}/${Version}/vspackage
Hi thanks for the feedback, and sorry for not coming back earlier to this.
I have updated the url as you have suggested in your comments but that results in an error message that the package could not be found.
Can you add a PR on you r suggestion, maybe I am doing something wrong ;-)
Great script, @azurekid! I'd like to thank @paviad for modernizing it. Additionally, to allow for versions in the format of d+.d+.d+ (not just d.d.d), it's a good idea to change line 12 from
If ($_ -match "^([0-9].[0-9].[0-9])") {
toIf ($_ -match "^([0-9]+\.[0-9]+\.[0-9]+)$") {
.I ran the script in Bash using the following command:
pwsh /home/user/scripts/script.ps1 -Publisher "GitHub" -ExtensionName "copilot" -Version "1.96.259" -OutputLocation "/home/user/downloads"It worked flawlessly!
hi @uyriq
It has been quiet a while when I wrote this little script, but happy it still seems to work.
I have added your suggestion to the code
Kind Regards,
Rogier
The url structure has changed, it is now:
"https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${Publisher}/vsextensions/${ExtensionName}/${Version}/vspackage"