在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 
    } 

能否请您在指出帮我要去的地方错在这里?

谢谢!

+0

@PetSerAl,我试过了,以及在我的剧本,但我仍然不断收到执行脚本的凭据提示每次。我认为这是因为(脚本每次执行时调用Get-Credential)。 – kay5

+0

@PetSerAl我编辑了我原来的问题。你能指出我要去哪里吗? – kay5

您可以将PSCredential对象存储在全局变量中。您首先检查是否存在变量并包含PSCredential对象。如果没有,比你为从用户证书:

if(!(Test-Path Variable::global:GlobalCred)-or($global:GlobalCred-isnot[pscredential])){ 
    $global:GlobalCred=Get-Credential 
} 
$Cred=$global:GlobalCred 
+0

谢谢,它在我的脚本中完美运行。标明了你的答案。 – kay5