powershell - Invoke-Command 更改输出编码

标签 powershell unicode encoding invoke-command

我正在使用一个在几台计算机上运行的脚本,在每台计算机上运行 Net 命令查询,并将任何一台计算机的结果与 Compare-Object 进行比较。

脚本是:

Net users /domain

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

用户本地运行示例:

Net users /domain
Adam Ñ

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

Invoke-Command -Computername MyWin7Comp -scriptblock {
Net users /domain}
Adam ¥

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

它成功了!在这台 Windows 10 1803 机器上远程运行脚本效果很好,但我也想在旧版本上运行...

我能做什么?

谢谢

最佳答案

我设法让它工作。 我在网上寻找答案并遇到了这个帖子: https://social.technet.microsoft.com/Forums/en-US/b92b15c8-6854-4d3e-8a35-51b4b56276ba/powershell-ise-vs-consoleoutputencoding?forum=ITCG

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

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

我运行的脚本是:

Ping.exe | Out-Null
[Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8
Invoke-Command -Computername MyW7Comp -ScriptBlock {Net Users /domain}

结果:

Adam Ñ

关于powershell - Invoke-Command 更改输出编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51968908/

相关文章:

c# - 检查字符串是否仅包含有效的 ISO 8859-1 字符

powershell - 从某些子文件夹中导入 PowerShell 模块

powershell - 使用 Azure Powershell Runbook 自动创建数据库

java - Escape unicode在Java中转义

Python 2.7 Unicode 字典

python - 从 Python 中的字符串中删除表情符号

powershell - 使用powershell解析xml

powershell - 文件IO,这是Powershell中的一个错误吗?

php - 从URL到PHP再到MySQL,如何进行UTF-8编码和解码?

python - 我的移动网络对编码有何影响?