Intune部署PowerShell脚本删除en-US语言包失效问题咨询
失效原因分析
- 作用域不匹配,无报错是因为执行逻辑本身正常:你使用的
Get-WinUserLanguageList、Set-WinUserLanguageList是用户级配置cmdlet,仅作用于当前执行脚本的账户:- 用System上下文执行时,修改的是本地System账户的语言配置,完全不会影响普通登录用户的语言列表
- 即使用用户上下文执行,Intune的PowerShell脚本默认在非交互式后台会话运行,部分用户配置接口不会加载当前用户的活动配置
- 脚本本身在对应上下文下执行无错误,因此IntuneManagementExtension.log不会记录报错
- 仅修改用户列表未卸载系统级语言包:你的脚本只是从当前执行账户的可用语言列表里移除了en-US,并没有真正卸载系统层面预装的en-US语言包,系统会在后续更新、用户重新登录时自动把en-US加回用户语言列表
- 缺少系统级配置修改操作:要完全移除en-US,还需要同步修改系统默认区域、欢迎界面语言、新用户默认语言等关联配置,单独修改用户语言列表会被系统默认配置覆盖
可用解决方案
1. 调整脚本内容,同时处理系统级+全用户配置
# 加载国际设置模块 Import-Module International -ErrorAction SilentlyContinue # 卸载系统级en-US语言包 $systemLangs = Get-WindowsCapability -Online | Where-Object Name -like "Language*en-US*" if ($systemLangs) { foreach ($lang in $systemLangs) { Remove-WindowsCapability -Name $lang.Name -Online | Out-Null } } # 修改系统默认区域、界面语言、输入语言为en-GB Set-WinSystemLocale en-GB Set-WinUILanguageOverride en-GB Set-Culture en-GB Set-WinHomeLocation 242 # 英国对应的地理位置代码 # 强制覆盖所有现有用户的语言列表 $userProfiles = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | Where-Object { $_.GetValue("ProfileImagePath") -like "*\Users\*" } foreach ($profile in $userProfiles) { $sid = $profile.PSChildName # 加载用户注册表配置单元 if (-not (Test-Path "HKU:\$sid")) { reg load "HKU\$sid" "$($profile.GetValue("ProfileImagePath"))\NTUSER.DAT" | Out-Null Start-Sleep -Milliseconds 500 } # 写入用户语言列表配置 $langPath = "HKU:\$sid\Control Panel\International\User Profile" if (Test-Path $langPath) { Set-ItemProperty -Path $langPath -Name "Languages" -Value @("en-GB") -Force # 删除残留的en-US配置 if (Test-Path "$langPath\en-US") { Remove-Item "$langPath\en-US" -Recurse -Force } } # 卸载注册表配置单元 [gc]::Collect() [gc]::WaitForPendingFinalizers() reg unload "HKU\$sid" | Out-Null } # 配置新用户、欢迎界面默认使用en-GB Copy-UserInternationalSettingsToSystem -WelcomeScreen $true -NewUser $true
2. 调整Intune部署配置
- 部署方式选择 Endpoint管理中心 > 脚本 > Windows PowerShell脚本
- 执行参数按以下配置:
- 运行此脚本使用的凭据:系统
- 强制设备检查签名:否
- 以64位PowerShell主机运行脚本:是(32位PowerShell调用系统级语言接口会出现兼容问题)
- 部署后通知用户重启设备一次,系统级语言包卸载和配置修改需要重启生效
内容的提问来源于stack exchange,提问作者user16760157
相关产品推荐
相关产品推荐

