Powershell的文本编码问题

时间:2019-05-21 15:58:15

标签: powershell encoding

我正在尝试将存储在文本文件中的密码转换为SecureString。这是我正在尝试的:

$pwdPath = 'C:\Password.txt'
$pwd = (ConvertTo-SecureString -Force -AsPlainText (Get-Content $pwdPath))

执行此操作时,密码不正确,尝试使用该密码时出现错误。但是,如果我直接在命令行中传递文件内容:

enter image description here

那么我们很好。起初我以为文件可能在结尾处有额外的换行符。但是,我尝试使用.Trim()和所有其他东西。如果我看一下文件的长度与字符串的长度,就会发现一个线索:

enter image description here

文件是字节数的两倍。因此,可能是某种编码问题。如果我看一下前几个字节:

enter image description here

我不是文本编码专家,但是看起来像是基于UTF-16的编码(每个字符两个字节),开头没有BOM(97是a,52是4,等等)。我尝试了各种方法将这个文件“转换”为与ConvertTo-SecureString兼容的文件,但是到目前为止(例如Get-Content $pwdPath | Set-Content -Encoding ASCII ./test.txt)我还没有找到能产生有效密码的东西。

1 个答案:

答案 0 :(得分:0)

因此,按照@PetSerAl的要求,访问没有Unicode的bom文件,因为powershell不如记事本那么聪明:

Get-Content $pwdPath -Encoding Unicode