NodeJS 子进程用省略号截断输出字符串

NodeJS Child Process truncate output string with ellipsis

我目前正在使用 Electron 开发应用程序。 此应用程序执行的操作之一是“验证版本”TeamSpeak 3 客户端插件。 为此,我 运行 一个检查插件文件的 SHA256 散列的命令,并将其与另一个字符串进行比较。

powershell.exe Get-FileHash $env:APPDATA\TS3Client\plugins\tokovoip_win32.dll

我 运行 tokovoip_win64.dll 的相同命令。这对大多数人都有效。但是,对于我的应用程序的一位用户,它中断了。

运行在命令上使用正则表达式后

const win32ActualHash = /SHA256\s+?(\S+?)\s/gm.exec(await child.execSync(
    'powershell.exe Get-FileHash $env:APPDATA\TS3Client\plugins\tokovoip_win32.dll'))[1];
const win64ActualHash = /SHA256\s+?(\S+?)\s/gm.exec(await child.execSync(
    'powershell.exe Get-FileHash $env:APPDATA\TS3Client\plugins\tokovoip_win64.dll'))[1];

预期输出是

win32ActualHash = 'DDCF282FDC439DE4E560F74231B22850EB7016573730A0CD94B08AAEECDEC167';
win64ActualHash = 'AA38ED69966741C4D68E964F05CB16351EC5700E337D953B07DB81D7FB3891C7';

但是,该用户得到的输出是

win32ActualHash = 'DDCF282FDC439DE4E560F74231B22850EB7016573730A0CD94B08AAEECDE...';
win64ActualHash = 'AA38ED69966741C4D68E964F05CB16351EC5700E337D953B07DB81D7FB38...';

我用于测试解决方案的设置非常有限,因为我无法重新创建此场景,而且我不想向该用户发送可能的修复程序垃圾邮件。

是什么导致这些字符串被处理运行,我怎样才能防止这种情况发生?

我通过在 powershell 命令中将其输送到 Format-List 中设法解决了这个问题:

powershell.exe "Get-FileHash $env:APPDATA\TS3Client\plugins\tokovoip_win32.dll  | Format-List"

然后更改 RegExp 以提取哈希

const win32ActualHash = /Hash\s*?:\s*(\S*)\s*/gm.exec(await child.execSync(
            'powershell.exe "Get-FileHash $env:APPDATA\TS3Client\plugins\tokovoip_win32.dll | Format-List"'))[1];
        const win64ActualHash = /Hash\s*?:\s*(\S*)\s*/gm.exec(await child.execSync(
            'powershell.exe "Get-FileHash $env:APPDATA\TS3Client\plugins\tokovoip_win64.dll | Format-List"'))[1];

Format-List 似乎从不截断字符串,因此提供一致的输出