在Powershell会话中存储凭据

时间:2015-10-05 08:12:49

标签: powershell session

我经常使用一个脚本,其中要求使用备用凭据来调用远程服务器上的命令。挑战是我每次运行脚本时都必须输入凭据。

有没有办法将凭据存储在当前活动的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
    }

你能帮忙指出我在哪里出错吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将PSCredential对象存储在全局变量中。首先检查变量是否存在并包含PSCredential对象。如果不是,那么,与用户的凭证相比:

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