我正在使用以下命令,
$SQLServerPSCred = Get-Credential
获取凭据对象。
如何在没有提示的情况下获取Creds对象?
我尝试了下面的代码,但是失败了。
$SQLServerPSCred = New-Object System.Management.Automation.PSCredential -ArgumentList $UserName, $Password
答案 0 :(得分:1)
关于该代码的实际问题,您没有提供很多信息。提示您第一个示例是正确的。当您明确告诉它要问您时。
第二个示例是不完整的。
PowerShell – How to create a PSCredential object by koteshblog举例说明了如何做到这一点:
$secpasswd = ConvertTo-SecureString "PlainTextPassword" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("username", $secpasswd)
如您所见,您首先需要将密码转换为SecureString,然后将其传递给凭证对象。它还显示了稍微不同的语法,但这没关系。
根据您正在执行的操作以及该脚本所在的位置,值得为您的机密寻找某种形式的“更安全”的存储,这也是值得的。因为每个有权访问该脚本的人都可以从中提取用户名和密码。
一种选择是存储安全字符串。但是请记住,安全字符串在某种程度上与用户相关。因此,您将无法轻松地传递包含密码的文本文件。
有关如何执行此操作的示例,请检查Powershell Tip – Storing and Using Password Credentials by robcost。这是一个基本的解决方案,可能会根据您的需求提供更好的解决方案。