我编写了一个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.""
格式正确是什么?我怎样才能知道它的最新动态和期望值?
答案 0 :(得分:0)
好的,我发现了它,感谢您提示的类型:
我不得不将它拆分为逗号,所以正确的方法是:
[byte[]]$new_blah = $blah.split(",")
现在解密密码有效。
非常感谢:>