在Powershell会话中存储凭据
问题描述:
我经常使用脚本,其中的要求是使用备用凭据来调用远程服务器上的命令。我面临的挑战是每次运行脚本时都必须输入证书。在Powershell会话中存储凭据
有没有办法将凭据存储在当前活动的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
}
能否请您在指出帮我要去的地方错在这里?
谢谢!
答
您可以将PSCredential
对象存储在全局变量中。您首先检查是否存在变量并包含PSCredential
对象。如果没有,比你为从用户证书:
if(!(Test-Path Variable::global:GlobalCred)-or($global:GlobalCred-isnot[pscredential])){
$global:GlobalCred=Get-Credential
}
$Cred=$global:GlobalCred
+0
谢谢,它在我的脚本中完美运行。标明了你的答案。 – kay5
@PetSerAl,我试过了,以及在我的剧本,但我仍然不断收到执行脚本的凭据提示每次。我认为这是因为(脚本每次执行时调用Get-Credential)。 – kay5
@PetSerAl我编辑了我原来的问题。你能指出我要去哪里吗? – kay5