所以我想为本地用户保存安全的字符串变量类型。这样我就可以运行convertfrom-securestring在.ps1文件中进行rest api调用,而无需访问密码。我尝试的是什么?
我使用的代码如下,但尚未运行:
$PlainPassword = "atestpassword"
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
[Environment]::SetEnvironmentVariable('JiraCreds', $SecurePassword, "User")
环境变量是否仅保存为字符串而不支持其他数据类型?
答案 0 :(得分:2)
是的,环境变量总是字符串,并且[securestring]
实例不能直接使用,因为它的字符串表示只是它的类型名称(System.Security.SecureString
)。
但是,您可以通过管道ConvertFrom-SecureString
获取(仍然加密的)字符串表示形式:
$PlainPassword = "atestpassword" # Don't actually store this in your script.
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force |
ConvertFrom-SecureString
[Environment]::SetEnvironmentVariable('JiraCreds', $SecurePassword, "User")
稍后使用环境变量构建[pscredential]
实例(以当前用户的用户名为例):
$cred = New-Object pscredential $env:USERNAME, (ConvertTo-SecureString $env:JiraCreds)