Apps/Get-Zoom.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
$Apps = @(
    @{Name = 'Zoom'; Architecture = 'x86'; Type = 'Exe'; Uri = 'https://zoom.us/client/latest/ZoomInstallerFull.exe' }
    @{Name = 'Zoom'; Architecture = 'x64'; Type = 'Exe'; Uri = 'https://zoom.us/client/latest/ZoomInstallerFull.exe?archType=x64' }
    @{Name = 'Zoom'; Architecture = 'ARM64'; Type = 'Exe'; Uri = 'https://zoom.us/client/latest/ZoomInstallerFull.exe?archType=winarm64' }
    @{Name = 'Zoom'; Architecture = 'x86'; Type = 'Msi'; Uri = 'http://zoom.us/client/latest/ZoomInstallerFull.msi' }
    @{Name = 'Zoom'; Architecture = 'x64'; Type = 'Msi'; Uri = 'http://zoom.us/client/latest/ZoomInstallerFull.msi?archType=x64' }
    @{Name = 'Zoom'; Architecture = 'ARM64'; Type = 'Msi'; Uri = 'http://zoom.us/client/latest/ZoomInstallerFull.msi?archType=winarm64' }
    @{Name = 'Zoom Plugin for Microsoft Outlook'; Architecture = 'x86'; Type = 'Msi'; Uri = 'http://zoom.us/client/latest/ZoomOutlookPluginSetup.msi' }
    @{Name = 'Zoom Plugin for IBM Notes'; Architecture = 'x86'; Type = 'Msi'; Uri = 'https://zoom.us/client/latest/ZoomNotesPluginSetup.msi' }
    @{Name = 'Zoom Notes Admin Tool'; Architecture = 'x86'; Type = 'Msi'; Uri = 'https://zoom.us/client/latest/ZoomNotesPluginAdminTool.msi' }
    @{Name = 'Zoom Plugin for Skype for Business'; Architecture = 'x86'; Type = 'Msi'; Uri = 'http://zoom.us/client/latest/ZoomLyncPluginSetup.msi' }
    @{Name = 'Zoom Rooms'; Architecture = 'x86'; Type = 'Exe'; Uri = (Get-Link 'https://zoom.us/download' -MatchProperty href -Pattern 'rooms\S+exe' -PrefixDomain) }
    @{Name = 'Zoom Rooms'; Architecture = 'x86'; Type = 'Msi'; Uri = (Get-Link 'https://zoom.us/download' -MatchProperty href -Pattern 'rooms\S+msi' -PrefixDomain) }
)

foreach ($App in $Apps) {
    try {
        $URL = (Resolve-Uri -Uri $App.Uri).Uri
        $Version = $URL | Get-Version
        New-NevergreenApp -Name $App.Name -Version $Version -Uri $URL -Architecture $App.Architecture -Type $App.Type
    }
    catch {
        Write-Warning -Message "Unable to get results for $($App.Name): $($_.Exception.Message)"
    }
}

try {

    $VDIDownloadURL = Get-Link -Uri 'https://support.zoom.us/hc/en-us/sections/360011509631-VDI-Downloads' -MatchProperty href -Pattern 'VDI-Release-Version' -PrefixDomain
    $VDILinks = (Invoke-WebRequest -Uri $VDIDownloadURL -UseBasicParsing).Links

    $Apps = @(
        @{Name = 'Zoom VDI Client'; Architecture = 'x86'; Type = 'Msi'; Pattern = 'ZoomInstallerVDI\.msi$' }
        @{Name = 'Zoom Citrix HDX Media Plugin'; Architecture = 'x86'; Type = 'Msi'; Pattern = 'ZoomCitrixHDXMediaPlugin\.msi$' }
        @{Name = 'Zoom VMware Media Plugin'; Architecture = 'x86'; Type = 'Msi'; Pattern = 'ZoomVmwareMediaPlugin\.msi$' }
        @{Name = 'Zoom WVD Media Plugin'; Architecture = 'x86'; Type = 'Msi'; Pattern = 'ZoomWVDMediaPlugin\.msi$' }
        @{Name = 'Zoom VDI Log Tool'; Architecture = 'x86'; Type = 'Msi'; Pattern = 'ZoomVDITool\.exe$' }
    )

    foreach ($App in $Apps) {
        $URL = $VDILinks | Where-Object href -match $App.Pattern | Select-Object -ExpandProperty href -First 1
        $Version = $VDILinks | Where-Object href -match $App.Pattern | Select-Object -ExpandProperty outerHTML -First 1 | Get-Version -Pattern '((?:\d+\.)+\d+)<'

        if ($URL -and $Version) {
            New-NevergreenApp -Name $App.Name -Version $Version -Uri $URL -Architecture $App.Architecture -Type $App.Type
        }
        else {
            Write-Warning -Message "Unable to find link for $($App.Name)"
        }
    }

}
catch {
    Write-Warning -Message "Unable to get results for Zoom VDI downloads: $($_.Exception.Message)"
}