【问题标题】:Powershell - Save encrypted user and pass in a script?Powershell - 保存加密用户并传入脚本?
【发布时间】:2023-11-16 01:52:01
【问题描述】:

我在 Powershell 中使用了一个脚本,该脚本使用来自 API 的用户名和密码发出 Web 请求。由于是共享计算机,出于安全原因,我想加密用户和密码。 这是我使用的基本网络请求(我从堆栈溢出中的其他 question 获得):

$user = 'user'
$pass = 'pass'

$pair = "$($user):$($pass)"

$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))

$basicAuthValue = "Basic $encodedCreds"

$Headers = @{
    Authorization = $basicAuthValue
}

Invoke-WebRequest -Uri 'https://whatever' -Headers $Headers

我的问题是我没有找到加密用户和密码变量的方法,尝试使用 ConvertTo-SecureString 和 convertTFrom-SecureString,但它不起作用。我想知道是否有办法将加密的凭据保存在文件或其他方式中。无需保存为环境变量并避免获取凭据,因为我想将脚本作为任务自动化。

如有任何疑问,请发表评论。

感谢观看,祝您编码愉快。

问候

【问题讨论】:

标签: powershell encryption credentials webrequest


【解决方案1】:

如果以后有人和我有同样的问题,可以使用powershell中的下一个工具Export-Clixml和Import-Clixml:

$cred = Get-Credential | Export-CliXml -Path ..\cred.ps1.credentials

然后使用 import 访问凭据 $Credential = Import-CliXml -Path "..\cred.ps1.credentials"

现在你必须添加到 invoke-webrequest 中

Invoke-WebRequest -Uri 'https://whatever' -credentials $credential

编码愉快!

【讨论】: