我正在尝试在PowerShell中获取命令的输出并对其进行编码,然后再次对其进行解码,以接收所述命令的结果,如图所示。

$enc = [system.Text.Encoding]::UTF8
$bytes = $enc.GetBytes((Invoke-Expression "net users"))
$enc.GetString($bytes)

但是,与原始的net users命令相比,结果格式不正确。我尝试将编码更改为ASCII和Unicode,但结果仍然格式错误。

关于如何保持格式的任何想法?

最佳答案

问题不是由编码引起的,而是因为PowerShell会破坏命令输出,除非您将其强制为字符串:

$bytes = $enc.GetBytes((Invoke-Expression "net users" | Out-String))

您不需要Invoke-Expression BTW。这也将起作用:
$bytes = $enc.GetBytes((net users | Out-String))

10-04 23:18