Powershell Byte Array输入字符串格式无效

时间:2015-06-29 12:50:47

标签: powershell encryption casting bytearray

我编写了一个powershell脚本,用于更改运行良好的本地管理员的密码 - 它通过配置文件设置密码,该文件包含加密密码和生成密码的aes密钥。 它按照这里描述的方式完成:http://www.adminarsenal.com/admin-arsenal-blog/secure-password-with-powershell-encrypting-credentials-part-2

现在我们有了一个管理套件,它简化了windoze和linux的管理,并且它不会将aes密钥直接传递给脚本。

如果我尝试通过管理套件执行它,我会收到以下错误:

Cannot convert value "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33" to type "System.Byte". Error: "Input string was not in a correct Format."

我认为问题在于PS和管理套件之间的差异来处理变量(或者黑魔法Powershell在管理套件中没有做到这一点)。在脚本中我从配置文件中读取aes-key到一个变量,该变量包含错误消息中代表aes密钥的值。

现在我的问题是:如何让powershell将aes密钥识别为字节数组?

我不能简单地做get-content C:\aes_keyfile,这可能是正确的类型转换或其他什么,因为简化流程有自己的方法,所以我在脚本中得到的是:

$blah = $blahobject.get_variable("aeskey")
$blah
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33

我不能这样做:

[byte[]]$new_blah = $blah - Error: Cannot convert value "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33"  to type "System.Byte[]".  Error: "Input string was not in a correct format.""

格式正确是什么?我怎样才能知道它的最新动态和期望值?

1 个答案:

答案 0 :(得分:0)

好的,我发现了它,感谢您提示的类型:

我不得不将它拆分为逗号,所以正确的方法是:

[byte[]]$new_blah = $blah.split(",")

现在解密密码有效。

非常感谢:>