install Windows 10 language packs and associated features on demand

lalajee 1,811 Reputation points

I'm try to install Windows 10 using TS with multiple language packs but its not working.

Download language packs into an Temp folder (I can see this folder being created and all of the files being download e.g. LP, FOD)
Then I run powershell script to install LP

Param ($contentPath)  
Set-StrictMode -Off  
$logFile = "C:\Language\InstallLanguagePacks.log"  
if(!(Test-Path $logFile)){New-Item -Path $logFile -Force}  
$contentPath | Tee-Object -FilePath $logFile -Append  
[array]$AllLPs = Get-ChildItem "$contentPath\*\LP\Microsoft-Windows-Client-Language-Pack_x64*.cab"  
"{0:u} | Found {1} language packs:" -f [datetime]::Now, $AllLPs.Count | Tee-Object -FilePath $logFile -Append  
$AllLPs.FullName | Tee-Object -FilePath $logFile -Append  
Foreach ($lp in $AllLPs)  
    "Install new LP $lp" | Tee-Object -FilePath $logFile -Append  
    Add-WindowsPackage -Online -PackagePath $("$LPPath") -NoRestart -Verbose 3>&1 4>&1 |   
    ForEach-Object {"{0:u} | {1}" -f [DateTime]::Now, ($_ | Out-String) | Tee-Object -FilePath $logFile -Append }  

Then i Run the Fod script to install all of the Fods.

Param ($contentPath)  
Set-StrictMode -Off  
$logFile = "C:\Language\InstallLanguagePacks-FOD.log"  
if(!(Test-Path $logFile)){New-Item -Path $logFile -Force}  
Start-Sleep -Seconds 2  
$installedLP = Get-WindowsPackage -Online -PackageName "*Client-languagePack*" |  
    Where-Object {$_.PackageState -eq 'Installed' -and $_.PackageName -notmatch '~en-US~'}  
"{0:u} | Detected installed Language packs:" -f [datetime]::Now | Tee-Object -FilePath $logFile -Append  
($installedLP | Select-Object CapacityID, PackageName | Out-String -Stream) | Tee-Object -FilePath $logFile -Append  
$FODCat = @('Microsoft-Windows-LanguageFeatures-Basic-',  
$FODs =@()  
foreach($Item in $FODCat)  
    $FODs += Get-ChildItem "$contentPath\*\FOD\$Item*.cab" | Select-Object -ExpandProperty FullName  
"{0:} | Reading FOd content source. Found {1} language and readion feature on demand (FOD): " -f [datetime]::Now, $FODs.Count |   
    Tee-Object -FilePath $logFile -Append  
If($FODs.Count) {   
    "",$FODs.Substring($contentPath.Length),"" | Tee-Object -FilePath $logFile -Append  
    $FODs | Tee-Object -FilePath $logFile -Append   
foreach ($fp in $FODs)  
    "Installing FoD $fp" | Tee-Object -FilePath $logFile -Append  
     Add-WindowsPackage -Online -PackagePath "$($fp)" -NoRestart -PreventPending -Verbose 3>&1 4>&1 |   
    ForEach-Object {"{0:u} | {1}" -f [DateTime]::Now, ($_ | Out-String) | Tee-Object -FilePath $logFile -Append }  

but nothing happens, I try to install LP manually in winpe mode but I get following error


Microsoft Configuration Manager Deployment
Microsoft Configuration Manager Deployment
Microsoft Configuration Manager: An integrated solution for for managing large groups of personal computers and servers.Deployment: The process of delivering, assembling, and maintaining a particular version of a software system at a site.
921 questions
{count} votes

1 answer

Sort by: Most helpful
  1. Amandayou-MSFT 11,051 Reputation points


    We use the command of Add-WindowsPackage -Online, which is for the running OS, so it is suggested to install LP in full OS, and then check if it is working.

    Besides, we could refer to this link to install language pack with integrating MDT with ConfigMgr.
    Note: Non-Microsoft link, just for the reference.

    If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.