Public/Get-OSDSoftware.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<#
.SYNOPSIS
Download software related to OS Deployment
 
.DESCRIPTION
Download software related to OS Deployment, including the ADK and MDT
 
.LINK
https://osdsoftware.osdeploy.com/module/functions/get-osdsoftware
 
.PARAMETER Name
Name of the software to download
 
.PARAMETER DownloadPath
This is the path to download the updates
 
.EXAMPLE
Get-OSDSoftware -Name 'Google Chrome Enterprise x64' -DownloadPath C:\Temp
Downloads googlechromestandaloneenterprise64.msi to C:\Temp
Alternatively, use the shorter command line
OSDSoftware 'Google Chrome Enterprise x64' C:\Temp
#>

function Get-OSDSoftware {
    [CmdletBinding()]
    PARAM (
        [Parameter(Position=0,Mandatory=$true)]
        [ValidateSet(`
            'Dell Display Manager',
            'Google Chrome Enterprise x64',
            'Microsoft ADK 1803',
            'Microsoft ADK 1809',
            'Microsoft ADK 1809 WinPE Addon',
            'Microsoft ADK 1903',
            'Microsoft ADK 1903 WinPE Addon',
            'Microsoft ADK 2004',
            'Microsoft ADK 2004 WinPE Addon',
            'Microsoft MDT 8456 x86',
            'Microsoft MDT 8456 x64',
            'Microsoft MDT Hotfix 4564442',
            'Microsoft VS code User x64',
            'Microsoft VS code System x64'
        )]
        [string]$Name,
        [Parameter(Position=1)]
        [string]$DownloadPath,
        [switch]$Run
    )
    #===================================================================================================
    # Variables
    #===================================================================================================
    $Global:OSDInfoUrl = $null
    $Global:OSDPageUrl = $null
    $Global:OSDDownloadUrl = $null
    $Global:OSDDownloadFileName = $null
    $Global:OSDDownloadMethod = $null
    #===================================================================================================
    # Paths
    #===================================================================================================
    #{374DE290-123F-4565-9164-39C4925E467B}
    if (!($DownloadPath)) {$DownloadPath = [Environment]::GetFolderPath("Desktop")}
    if (!(Test-Path "$DownloadPath")) {New-Item -Path "$DownloadPath" -ItemType Directory -Force | Out-Null}
    #===================================================================================================
    # Software
    #===================================================================================================
    if ($Name -eq 'Dell Display Manager') {InfoDellDisplayManager}
    if ($Name -eq 'Google Chrome Enterprise x64') {InfoGoogleChrome}
    if ($Name -eq 'Microsoft ADK 1803') {InfoADK1803}
    if ($Name -eq 'Microsoft ADK 1809') {InfoADK1809}
    if ($Name -eq 'Microsoft ADK 1809 WinPE Addon') {InfoADK1809PE}
    if ($Name -eq 'Microsoft ADK 1903') {InfoADK1903}
    if ($Name -eq 'Microsoft ADK 1903 WinPE Addon') {InfoADK1903PE}
    if ($Name -eq 'Microsoft ADK 2004') {InfoADK2004}
    if ($Name -eq 'Microsoft ADK 2004 WinPE Addon') {InfoADK2004PE}
    if ($Name -eq 'Microsoft MDT 8456 x86') {InfoMDTx86}
    if ($Name -eq 'Microsoft MDT 8456 x64') {InfoMDTx64}
    if ($Name -eq 'Microsoft MDT Hotfix 4564442') {InfoMDTHotfix}
    if ($Name -eq 'Microsoft VS code User x64') {InfoVSCodeUser}
    if ($Name -eq 'Microsoft VS code System x64') {InfoVSCodeSystem}
    #===================================================================================================
    # Download
    #===================================================================================================
    Write-Verbose -Verbose "Downloading from $OSDDownloadUrl using $OSDDownloadMethod"
    #Write-Host -ForegroundColor DarkGray "Saving As: $DownloadPath\$OSDDownloadFileName"
    #Write-Host -ForegroundColor DarkGray "Download Method: $OSDDownloadMethod"
    #===================================================================================================
    # BITS
    #===================================================================================================
    if ($OSDDownloadMethod -eq 'BITS') {
        Start-BitsTransfer -Source $OSDDownloadUrl -Destination "$DownloadPath"
    }
    #===================================================================================================
    # WebClient
    #===================================================================================================
    if ($OSDDownloadMethod -eq 'WebClient') {
        if (Test-Path "$DownloadPath\$OSDDownloadFileName") {
            Write-Warning "Overwriting existing file $DownloadPath\$OSDDownloadFileName"
        } else {
            Write-Warning "Downloading to $DownloadPath\$OSDDownloadFileName"
        }
        (New-Object System.Net.WebClient).DownloadFile("$OSDDownloadUrl", "$DownloadPath\$OSDDownloadFileName")
        if (Test-Path "$DownloadPath\$OSDDownloadFileName") {
            Write-Verbose -Verbose "Download Complete"
            if ($Run -eq $true) {
                & "$DownloadPath\$OSDDownloadFileName"
            }
        }
    }
    #===================================================================================================
    # WebRequest
    #===================================================================================================
    if ($OSDDownloadMethod -eq 'WebRequest') {
        #$DownloadFileName = [System.IO.Path]::GetFileName((Get-RedirectedUrl "$OSDDownloadUrl"))
        #Write-Host $DownloadFileName
        Invoke-WebRequest -Uri $OSDDownloadUrl -OutFile "$DownloadPath\$OSDDownloadFileName"

    }
}