我经常使用一个脚本,其中要求使用备用凭据来调用远程服务器上的命令。挑战是我每次运行脚本时都必须输入凭据。
有没有办法将凭据存储在当前活动的PowerShell会话中?例如,在第一次执行脚本时,它应该要求提供凭据,并且后续运行的脚本不应该要求提供凭据。
我在我的脚本中提出了这个代码,但是当我将$ cred变量传递给-Credential参数时,它没有按预期工作。
New-Variable -Name Env -Value @{} -Scope GLOBAL -Force
If (Test-Path Variable::global:Env)
{
$cred = $global:Env
}
Else
{
New-Variable -Name Env -Value @{} -Scope GLOBAL -Force
$cred = $global:Env.(Get-Credential) | Out-Null
}
你能帮忙指出我在哪里出错吗?
谢谢!
答案 0 :(得分:2)
您可以将PSCredential
对象存储在全局变量中。首先检查变量是否存在并包含PSCredential
对象。如果不是,那么,与用户的凭证相比:
if(!(Test-Path Variable::global:GlobalCred)-or($global:GlobalCred-isnot[pscredential])){
$global:GlobalCred=Get-Credential
}
$Cred=$global:GlobalCred