You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过PowerShell自动应用Windows 10语言包并设置系统、欢迎屏幕及非Unicode程序语言

解决PowerShell脚本自动安装并应用Windows语言包到系统全局的问题

我之前也碰到过一模一样的情况——PowerShell语言设置命令经常因为语言包没安装完成就执行,导致只能触发下载却没法真正应用;而且默认的设置只对当前用户生效,要覆盖欢迎屏幕和新用户还得额外处理。下面是针对你的问题的完整解决方案:

核心问题分析

你的原脚本跳过了语言包的自动安装验证与等待环节,导致设置命令在语言包未就绪时运行,只能触发下载但无法完成应用;同时缺少将配置同步到系统全局(欢迎屏幕、新用户配置文件)的关键命令。

完整自动化脚本(以德语de-DE为例)

# 定义目标语言代码与对应区域GeoID
$targetLang = "de-DE"
$geoId = 94 # 德国的GeoID

# 1. 自动下载并安装基础语言包(确保设置前语言包已就绪)
Write-Host "正在安装基础语言包..."
$langCapability = Get-WindowsCapability -Online | Where-Object {$_.Name -like "Language.Basic~~~$targetLang*"}
if ($langCapability.State -ne "Installed") {
    $langCapability | Add-WindowsCapability -Online | Out-Null
    # 循环等待安装完成,避免后续命令因包未就绪失效
    while ((Get-WindowsCapability -Online | Where-Object {$_.Name -eq $langCapability.Name}).State -ne "Installed") {
        Start-Sleep -Seconds 5
        Write-Host "等待语言包安装中..."
    }
    Write-Host "基础语言包安装成功!"
} else {
    Write-Host "基础语言包已安装,跳过此步骤。"
}

# 可选:安装语音识别/手写支持(按需启用)
# Write-Host "正在安装语音支持..."
# Get-WindowsCapability -Online | Where-Object {$_.Name -like "Language.Speech~~~$targetLang*"} | Add-WindowsCapability -Online
# Write-Host "正在安装手写支持..."
# Get-WindowsCapability -Online | Where-Object {$_.Name -like "Language.Handwriting~~~$targetLang*"} | Add-WindowsCapability -Online

# 2. 配置当前用户的语言列表
Write-Host "设置用户语言列表..."
$userLangList = New-WinUserLanguageList -Language $targetLang
# 如需保留原有语言作为备选,可添加此行:$userLangList.Add("en-US")
Set-WinUserLanguageList $userLangList -Force

# 3. 将语言设置同步到系统全局(欢迎屏幕、新用户自动继承)
Write-Host "同步设置到系统全局..."
Copy-WinUserLanguageList -LanguageList $userLangList -ToSystem

# 4. 设置系统级语言参数
Write-Host "配置系统区域与UI语言..."
Set-Culture $targetLang # 设置日期/时间/数字等区域格式
Set-WinSystemLocale -SystemLocale $targetLang # 设置非Unicode程序的显示语言
Set-WinUILanguageOverride -Language $targetLang # 设置系统UI语言覆盖
Set-WinHomeLocation -GeoId $geoId # 设置家庭区域

# 5. 重启系统使所有设置生效
Write-Host "所有配置已完成,系统将在10秒后重启..."
shutdown -r -t 10 -c "语言设置已更新,系统即将重启"

关键步骤说明

  • 语言包安装验证:通过Get-WindowsCapability检查语言包状态,确保安装完成后再执行后续设置,彻底解决"仅下载不应用"的问题。
  • 系统全局同步Copy-WinUserLanguageList -ToSystem是核心命令——它会把当前用户的语言配置复制到默认用户配置文件,让欢迎屏幕和新创建的用户自动继承该设置。
  • 非Unicode程序语言Set-WinSystemLocale就是专门设置非Unicode程序的显示语言,这个配置必须重启后才能完全生效。

西班牙语适配方法

只需将脚本中的$targetLang改为es-ES$geoId改为30(西班牙的GeoID)即可,其余步骤完全通用。


内容的提问来源于stack exchange,提问作者NEWWORLDWORLD

火山引擎 最新活动