You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10 PowerShell cmdlet不支持UTF-8字符串参数问题求助

解决波兰语Windows 10下PowerShell本地用户/组编码问题

问题1:本地化组名无法识别

不要依赖随系统语言变化的本地化组名(如波兰语的Użytkownicy),这类名称容易因编码解析错误导致识别失败。改用固定SID直接定位内置组是更可靠的方案:

修改后的脚本

$SecurePassword = ConvertTo-SecureString "Password" -AsPlainText -Force
New-LocalUser "Maluch" -Password $SecurePassword -FullName "Uczen" -Description "Uczen"
# 通过固定SID获取内置Users组(SID S-1-5-32-545为所有Windows版本中Users组的通用标识)
Add-LocalGroupMember -SID S-1-5-32-545 -Member "Maluch"

或者先获取组对象再操作(可读性更强):

$SecurePassword = ConvertTo-SecureString "Password" -AsPlainText -Force
New-LocalUser "Maluch" -Password $SecurePassword -FullName "Uczen" -Description "Uczen"
$usersGroup = Get-LocalGroup -SID S-1-5-32-545
Add-LocalGroupMember -Group $usersGroup -Member "Maluch"

问题2:含UTF-8字符的密码登录失败

问题根源是Windows PowerShell默认将无BOM的UTF-8脚本解析为系统默认ANSI编码(波兰语系统对应Windows-1250),导致特殊字符被错误转换。有两种解决方式:

方式1:保存脚本为UTF-8带BOM编码

使用VS Code、Notepad++等编辑器,将脚本文件的编码设置为UTF-8 with BOM后保存,PowerShell就能正确解析trójka这类特殊字符。

方式2:使用Unicode转义序列

直接在脚本中用Unicode转义符代替特殊字符,无需依赖脚本编码:

# 用`u00f3代替ó
$SecurePassword = ConvertTo-SecureString "tr`u00f3jka" -AsPlainText -Force
New-LocalUser "TestUser" -Password $SecurePassword -FullName "Test User" -Description "Test User"

补充说明

你之前尝试的$PSDefaultParameterValues、[console]::OutputEncoding等设置仅影响控制台的输入输出编码,无法解决脚本文件本身的编码解析问题,因此无效。

内容的提问来源于stack exchange,提问作者Rafał Krych

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:05:33