Today I had a need to download all SharePoint 2010 Language Packs. Don’t ask. 🙂
Rather than manually clicking through 40 times, I decided to adapt a script from Brian Lalancette for downloading all SharePoint Prerequisites into a script for downloading all language packs.
Sounded easy, and truthfully it wasn’t too difficult – however, the complication was that Microsoft has named ALL of the language packs the same thing, ServerLanguagePack.exe.
I ended up changing Brian’s script a little to have the script rename each file, replacing the “Server” string with a random value using Get-Random.
It worked perfectly, and I’ll be using the AutoSPInstaller scripts to install them all. If you haven’t yet seen the AutoSPInstaller, you’re missing out on some seriously cool stuff!
Here’s my script:
Import-Module BitsTransfer ## Prompt for the destination path $DestPath = Read-Host -Prompt "- Enter the destination path for downloaded files" ## Check that the path entered is valid If (Test-Path "$DestPath" -Verbose) { ## If destination path is valid, create folder if it doesn't already exist $DestFolder = "$DestPath\LanguagePacks" New-Item -ItemType Directory $DestFolder -ErrorAction SilentlyContinue } Else { Write-Warning " - Destination path appears to be invalid." ## Pause Write-Host " - Please check the path, and try running the script again." Write-Host "- Press any key to exit..." $null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") break } ## We use the hard-coded URL below, so that we can extract the filename (and use it to get destination filename $DestFileName) ## Note: These URLs are subject to change at Microsoft's discretion. $UrlList = ("http://download.microsoft.com/download/A/6/C/A6C2FAE9-58A4-410D-81E0-682E8CBF3D18/ServerLanguagePack.exe", #Arabic "http://download.microsoft.com/download/0/D/B/0DB91457-43D2-4BCC-A7AF-8559C3E3E1CF/ServerLanguagePack.exe", #Basque "http://download.microsoft.com/download/9/1/C/91CFFA84-3A8C-4B2B-BD1F-AF77073C832D/ServerLanguagePack.exe", #Bulgarian "http://download.microsoft.com/download/0/7/B/07B06744-859A-40CF-84BB-4C8113F9FB75/ServerLanguagePack.exe", #Catalan "http://download.microsoft.com/download/D/F/C/DFCC90EE-FC55-4EC3-8618-7A2ED0B6F20F/ServerLanguagePack.exe", #Chinese Simplified "http://download.microsoft.com/download/5/D/E/5DE5B04D-DA7E-41DD-8BB5-FE7BF02630B8/ServerLanguagePack.exe", #Chinese Traditional "http://download.microsoft.com/download/B/6/B/B6B2439C-EB60-4361-AB83-71CB6B890ADE/ServerLanguagePack.exe", #Croatian "http://download.microsoft.com/download/7/B/6/7B67B8FC-81C6-446A-9681-897C0888D592/ServerLanguagePack.exe", #Czech "http://download.microsoft.com/download/C/D/7/CD76DD3E-95E4-4504-93CF-F7CD6D8B7CF5/ServerLanguagePack.exe", #Danish "http://download.microsoft.com/download/D/8/C/D8C7212B-6DFE-439D-B7D6-EFB35D66041E/ServerLanguagePack.exe", #Dutch "http://download.microsoft.com/download/1/7/F/17F6BB3B-662F-4555-9760-DB44D3B3F6A4/ServerLanguagePack.exe", #English "http://download.microsoft.com/download/4/4/6/446DDD4D-DC67-4663-B7C5-CCFA79316703/ServerLanguagePack.exe", #Estonian "http://download.microsoft.com/download/1/1/6/116C7960-6DFB-468E-BBCB-15E8706783F3/ServerLanguagePack.exe", #Finnish "http://download.microsoft.com/download/8/0/B/80B8DB8F-D863-4DD9-98E0-A3698510EF13/ServerLanguagePack.exe", #French "http://download.microsoft.com/download/D/0/F/D0FE84CB-B591-4D5E-9406-CBA2476D4A94/ServerLanguagePack.exe", #Galician "http://download.microsoft.com/download/7/3/8/738597D9-2817-46D7-8F70-7FBBEE73ABCF/ServerLanguagePack.exe", #German "http://download.microsoft.com/download/5/F/0/5F03CC80-D10A-43D5-AA1D-E84C6C077E2C/ServerLanguagePack.exe", #Greek "http://download.microsoft.com/download/D/1/0/D10A5EC6-6C6B-4C4B-9FF1-A662B397E850/ServerLanguagePack.exe", #Hebrew "http://download.microsoft.com/download/7/9/5/795A36AA-D414-4D67-A84D-6815D2FB5A88/ServerLanguagePack.exe", #Hindi "http://download.microsoft.com/download/F/D/B/FDB09771-D7FF-4123-A66D-2F0A58687E90/ServerLanguagePack.exe", #Hungarian "http://download.microsoft.com/download/A/8/4/A843E91B-7AEE-47B4-A144-49F525DEBD9D/ServerLanguagePack.exe", #Italian "http://download.microsoft.com/download/9/4/D/94DDA001-2059-4F02-8810-8662C1098F8D/ServerLanguagePack.exe", #Japanese "http://download.microsoft.com/download/F/C/D/FCD57DCD-2BFB-4638-94A3-583AD688CB4D/ServerLanguagePack.exe", #Kazakh "http://download.microsoft.com/download/B/9/D/B9DB186A-8126-49A9-AFA8-C6D63F12AA40/ServerLanguagePack.exe", #Korean "http://download.microsoft.com/download/3/E/D/3EDD2930-7BEC-4490-B917-7A49CBA7C5E5/ServerLanguagePack.exe", #Latvian "http://download.microsoft.com/download/E/E/E/EEE0F34F-94D1-4202-B0D0-213C93E20536/ServerLanguagePack.exe", #Lithuanian "http://download.microsoft.com/download/D/5/9/D596FB84-8ED3-44A4-88D1-FDD4798E226A/ServerLanguagePack.exe", #Norwegian "http://download.microsoft.com/download/B/F/1/BF1F45F4-44A8-453D-882D-03BAC1F6A0B5/ServerLanguagePack.exe", #Polish "http://download.microsoft.com/download/6/9/F/69F59A23-C22F-4B22-9D72-790E84F6070E/ServerLanguagePack.exe", #Portugese (Brazil) "http://download.microsoft.com/download/0/E/F/0EF8F011-89A6-43AE-BD52-090918750432/ServerLanguagePack.exe", #Portugese (Portugal) "http://download.microsoft.com/download/8/8/0/880A4C0E-25CA-43B5-84EF-A788FA462AB2/ServerLanguagePack.exe", #Romanian "http://download.microsoft.com/download/2/6/D/26D339A3-0304-4B66-8062-98BDC0E0D413/ServerLanguagePack.exe", #Russian "http://download.microsoft.com/download/F/D/2/FD2B1BA8-9841-46F9-A4A7-B97294554249/ServerLanguagePack.exe", #Serbian (Latin) "http://download.microsoft.com/download/0/E/7/0E7A8426-7797-48F9-B396-AA96ADD1D899/ServerLanguagePack.exe", #Slovak "http://download.microsoft.com/download/0/3/5/035FD96F-04B1-4461-B8E9-6492654C8549/ServerLanguagePack.exe", #Slovenian "http://download.microsoft.com/download/0/D/5/0D547EA0-C094-4D06-BE15-F5111A1D4642/ServerLanguagePack.exe", #Spanish "http://download.microsoft.com/download/5/2/9/5296BCC9-F0ED-461F-9E22-8A816DEC75C8/ServerLanguagePack.exe", #Swedish "http://download.microsoft.com/download/E/E/A/EEA4DC8B-4979-44C5-AF5E-E326DA04661C/ServerLanguagePack.exe", #Thai "http://download.microsoft.com/download/2/1/1/2118AF0D-A747-486E-A5BB-6B35E5588247/ServerLanguagePack.exe", #Turkish "http://download.microsoft.com/download/5/9/D/59DEC052-7E29-4F40-A27A-9AA94A8AAA1A/ServerLanguagePack.exe" #Ukranian ) ForEach ($Url in $UrlList) { ## Get the file name based on the portion of the URL after the last slash and replace the word "Server" with a random string ## (Crude way of getting unique file names since all Lang Packs are ServerLanguagePack.exe) $DestFileName = $Url.Split('/')[-1] -replace "Server",(Get-Random) Try { ## Check if destination file already exists If (!(Test-Path "$DestFolder\$DestFileName")) { ## Begin download Start-BitsTransfer -Source $Url -Destination $DestFolder\$DestFileName -DisplayName "Downloading `'$DestFileName`' to $DestFolder" -Priority High -Description "From $Url..." -ErrorVariable err If ($err) {Throw ""} } Else { Write-Host " - File $DestFileName already exists, skipping..." } } Catch { Write-Warning " - An error occurred downloading `'$DestFileName`'" break } } ## View the downloaded files in Windows Explorer Invoke-Item $DestFolder ## Pause Write-Host "- Downloads completed, press any key to exit..." $null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")