【发布时间】:2019-05-21 15:58:14
【问题描述】:
我正在尝试将存储在文本文件中的密码转换为 SecureString。这是我正在尝试的:
$pwdPath = 'C:\Password.txt'
$pwd = (ConvertTo-SecureString -Force -AsPlainText (Get-Content $pwdPath))
当我这样做时,密码不正确,当我尝试使用它时出现错误。但是,如果我直接在命令行中传入文件的内容:
那我们很好。起初我以为文件的末尾可能有一个额外的换行符。但是,我尝试使用.Trim() 和所有这些东西。如果我查看文件的长度与字符串的长度,我会得到一个线索:
文件的字节数是字符串的两倍。所以,可能是某种编码问题。如果我查看前几个字节:
我不是文本编码专家,但看起来像是基于 UTF-16 的编码(每个字符两个字节),开头没有 BOM(97 是 a,52 是 4,等等)。我尝试了各种方法将此文件“转换”为与ConvertTo-SecureString 兼容的文件,但到目前为止(例如Get-Content $pwdPath | Set-Content -Encoding ASCII ./test.txt)我还没有找到任何导致有效密码的内容。
【问题讨论】:
-
Get-Content $pwdPath -Encoding Unicode -
@PetSerAl 工作,谢谢!!
-
你是如何创建文件的?
-
@js2010 我没有。这是 Service Fabric 创建的用于与 docker 容器共享证书的文件。
-
这种类型的文件偶尔会在窗口中弹出。信不信由你,记事本可以打开它们,然后用 bom 将它们保存为 unicode。或者只是
(get-content -encoding unicode file) | set-content -encoding unicode file2。
标签: powershell encoding