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

PowerShell脚本中如何提取非拉丁名用户并解决乱码问题?

解决Pacli.exe导出含非拉丁字符用户列表乱码问题

问题场景

执行命令.\Pacli.exe USERSLIST INCLUDESUBLOCATIONS=YES output(name, enclose, type) > users.txt导出用户列表时,非拉丁字符显示为?或�;即使使用Get-Content -Encoding UTF8读取文件或提前设置$OutputEncoding = [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding`,问题依旧。

解决方法

  • 直接捕获输出并指定编码写入文件
    绕过控制台重定向的编码限制,用PowerShell直接捕获命令输出,再通过Out-File指定UTF-8编码写入:

    $users = .\Pacli.exe USERSLIST INCLUDESUBLOCATIONS=YES output(name`, enclose`, type`)
    $users | Out-File -FilePath users.txt -Encoding UTF8
    
  • 转换编码适配Pacli输出
    如果Pacli使用OEM编码输出,先获取控制台编码,再将输出转换为UTF-8:

    $oemEncoding = [Console]::OutputEncoding
    $users = .\Pacli.exe USERSLIST INCLUDESUBLOCATIONS=YES output(name`, enclose`, type`) | ForEach-Object {
        [System.Text.Encoding]::UTF8.GetString($oemEncoding.GetBytes($_))
    }
    $users | Out-File -FilePath users.txt -Encoding UTF8
    
  • 用Start-Process指定输出编码
    通过Start-Process的参数直接指定标准输出的编码,彻底避开控制台编码干扰:

    Start-Process -FilePath .\Pacli.exe -ArgumentList 'USERSLIST INCLUDESUBLOCATIONS=YES output(name`, enclose`, type`)' -NoNewWindow -RedirectStandardOutput users.txt -Encoding UTF8
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:32:37