跨PowerShell CMDLET Inconcations的内存密码中内存



我有一些自定义的cmdlet,每个cmdlet都需要一个用户名和密码才能执行。目前,我每次运行这些CMDLET中的任何一个都必须输入我的凭据。用法模式使我通常在短时间的时间窗口内(也许每隔几天一次)运行这些命令的不同组合。这意味着我必须在此短期内几次输入密码。

有什么办法可以告诉Powershell在一段时间内将凭据中的内存缓存?我意识到这是一个安全权衡,但我愿意做到这一点,尤其是考虑到密码存储为SecureString。如果有某种持久的"会话"对象可以在其中跨CMDLET调用存储数据,这也可以工作,但我无法识别此类功能。

update

我忘了提到我是针对.NET核心,并且无法使用PSCredential类型。我的基础CMDLET课程:

[Parameter(
    Mandatory = true,
    HelpMessage = "Credentials for access.",
    ValueFromPipelineByPropertyName = true)]
public PSCredential Credentials
{
    get;
    set;
}

但是试图解除Password属性给出了编译器错误:

Reference to type 'SecureString' claims it is defined in 'mscorlib', but it could not be found  Contented.PowerShell..NETStandard,Version=v1.6

我项目的相关依赖性是:

"dependencies": {
  "Microsoft.PowerShell.5.ReferenceAssemblies": "1.0.0-*",
  "System.Security.SecureString": "4.3.0"
},
$cred = Get-Credentials

,然后将$cred传递到您正在调用的命令。或(如果我们在谈论PS会议)。这样,您可以重复使用会话调用许多命令。

$session = New-PSSession 
Invoke-Command -Session $session -ScriptBlock {}

最新更新