首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Invoke-Command更改输出编码

Invoke-Command更改输出编码
EN

Stack Overflow用户
提问于 2018-08-22 22:16:50
回答 1查看 1.2K关注 0票数 2

我正在使用一个在几台计算机上运行的脚本,在每台计算机上运行Net command query,并用Compare-Object比较任何一台计算机的结果。

脚本是:

代码语言:javascript
复制
Net users /domain

我的环境中的一些用户使用西班牙语字母。在本地运行该命令时,输出将返回正确字母为西班牙语的用户,但当使用Invoke-Command从另一台计算机远程运行该命令时,这些特定用户的输出将以符号显示。

本地运行的用户示例:

代码语言:javascript
复制
Net users /domain
Adam Ñ

使用Invoke-Command远程运行的用户示例:

代码语言:javascript
复制
Invoke-Command -Computername MyWin7Comp -scriptblock {
Net users /domain}
Adam ¥

我在Windows101803中找到了一个修复程序,它可以选择始终使用UTF-8 Unicode。Windows 10 1803 option only

它成功了!在这台Windows101803机器上远程运行脚本工作得很好,但我也想在旧版本上运行...

我能做什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-08-23 19:50:50

我设法让它工作了。我在网上搜索答案,遇到了这篇文章:https://social.technet.microsoft.com/Forums/en-US/b92b15c8-6854-4d3e-8a35-51b4b56276ba/powershell-ise-vs-consoleoutputencoding?forum=ITCG

有一个答案解释说,当使用PowerShell ISE时(我基本上使用的是),控制台实际上没有控制台的进程。这就是为什么当我尝试使用Jeren Mostert和Theo answers时,它不能工作,因为实际上没有控制台。

我要做的是运行一个带有Out-Null的可执行文件,这将打开一个叫做"conhost.exe“的进程,它实际上是控制台。然后运行Console::OutputEncoding = Text.UTF8Encoding::UTF8并最终启动Invoke-Command,它给出了一个编码的结果:)

我运行的脚本是:

代码语言:javascript
复制
Ping.exe | Out-Null
[Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8
Invoke-Command -Computername MyW7Comp -ScriptBlock {Net Users /domain}

结果是:

代码语言:javascript
复制
Adam Ñ
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51968908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档