代码之家  ›  专栏  ›  技术社区  ›  Jee

使用$host.ui.promptforcredential时,输入值存储在哪里?

  •  0
  • Jee  · 技术社区  · 6 年前

    在下面的代码中,系统将$credential的值存储在哪里?

    $Credential= $host.ui.PromptForCredential("","Please Enter Your domain username, eg. user1@contoso.com","","")

    代码执行后,值会发生什么情况?

    请原谅这些基本问题…只是想确定我正在编写的脚本是否存在任何安全隐患。我还希望能找到专门针对这一问题的msdn/technet文章。

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   boxdog    6 年前

    首先,你应该使用 Get-Credential 相反,它更简单,而且可以做同样的工作:

    $credential = Get-Credential -Message "Please Enter Your domain username, eg. user1@contoso.com"

    两种方法都创建了 PsCredential 对象,存储在其中的引用 $credential . 密码作为 SecureString ,以帮助保护它的安全,而不是写入磁盘、注册表等,除非您不遗余力地这样做:

    PS C:\> $credential
    
    UserName                        Password
    --------                        --------
    domain\user System.Security.SecureString
    

    所以,它是安全的,从偶然的尝试阅读。但是,它并不完全安全:

    PS C:\> $credential.GetNetworkCredential() | Format-List *   
    
    UserName       : user
    Password       : Password123
    SecurePassword : System.Security.SecureString
    Domain         : domain