【问题标题】:Store credentials in Powershell session在 Powershell 会话中存储凭据
【发布时间】:2015-10-05 18:57:44
【问题描述】:

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

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

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

谢谢!!

【问题讨论】:

  • @PetSerAl,我在我的脚本中也尝试过,但每次执行脚本时我仍然不断收到凭据提示。我认为这是因为每次执行脚本时都会调用(Get-Credential)。
  • @PetSerAl 我已经编辑了我原来的问题。你能指出我哪里出错了吗?

标签: powershell session


【解决方案1】:

您可以将PSCredential 对象存储在全局变量中。您首先检查变量是否存在并包含PSCredential 对象。如果没有,那么您将获得用户的凭据:

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

【讨论】:

  • 谢谢,它在我的脚本中完美运行。标记你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2019-10-04
  • 1970-01-01
相关资源
最近更新 更多