如何在PowerShell脚本中传递Windows凭据?

时间:2018-12-31 09:52:35

标签: powershell windows-security start-process credential-manager

我正在编写PS脚本以在Chrome浏览器中自动打开URL。我创建了一个凭证对象,并将其传递给Start-Process,如下所示。

$username = Read-Host 'What is your username?'
$password = Read-Host 'What is your password?' -AsSecureString
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
Start-Process -FilePath Chrome -ArgumentList $url -Credential $credentials

我希望使用凭据对象使用URL打开Chrome浏览器。但这会引发如下错误。

  

启动过程:由于错误:登录失败:用户名未知或密码错误而无法执行此命令。

注意:如果我手动将Windows安全凭据传递给URL,则URL可以正常工作,因此,我的凭据很好。传递Windows安全证书时感觉有些错误。不知道怎么了。

2 个答案:

答案 0 :(得分:1)

$userName = "Pandiyan"
$secpasswd = ConvertTo-SecureString "mypasswordiscool" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $secpasswd
$url = "localhost/atomicscope"
Start-Process -FilePath "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -ArgumentList $url -Credential $mycreds

您还应该指定chrome的路径,然后重试。代替readhost直接提供凭据,它应该立即启动chrome。如果有用户在等待在控制台中键入内容,那很好。否则,无需使用powershell自动化

答案 1 :(得分:1)

您已经将密码作为安全字符串读取,因此在创建凭据对象时无需再次执行该操作。仅当ConvertTo-SecureString包含明文密码时才需要$password

这将满足您的要求:

$credentials = New-Object Management.Automation.PSCredential $username, $password