PowerShell 脚本 - 从外部文件获取帐户信息

PowerShell Script - Get account information from an outside file

我目前有一个脚本成功地使用此方法远程连接到服务器并使用 Invoke-Command 运行 一些任务:

$c = Get-Credential 
$computername = "server.fqdn"
    $session = New-PSSession -ComputerName $computername -Authentication CredSSP -Credential $c

执行此操作时,系统会提示我输入我想要 运行 的帐户的用户名和密码。我输入它,它起作用了。

我希望能够做的不是在脚本执行时提示输入凭据,而是希望它自动使用我存储在某个文本文件中的凭据(或至少以这种方式使用密码)。这是因为我需要从服务器外部将脚本安排到 运行。

还有一个 thread 似乎与我想要做的非常接近。使用文本文件和 convert-securestring。我不太明白如何使用 New-PSSession 使用此方法。或许还有另一种方式。

到目前为止,我有以下代码。

  $username = "domain\username"
    $password  = cat C:\scripts\password.txt | convertto-securestring
    $c = new-object -typename System.Management.Automation.PSCredential `
             -argumentlist $username, $password 
    $computername = "server.fqdn"
    $session = New-PSSession -ComputerName $computername -Authentication CredSSP -Credential $c 

我仍然被提示输入用户名和密码并收到错误:

convertto-securestring : Input string was not in a correct format

我的密码在文本文件中。就像 password123 一样。在我尝试使用文本文件之前,密码一直有效。

我不会更正您的代码,但这是我在某些服务器上存储密码的方式。代码 运行 第一次要求输入密码,然后将其加密存储在文件中,下一次从文件中读取密码。 小心密码可以从文件内容中找到,我们无法读取它,但这可能是一个安全问题。

$passwordFile = "C:\scripts\password.txt"
$username = "domain\username"

# First time create password file
if (! (Test-Path $passwordFile))
{
  Read-Host -AsSecureString | convertfrom-securestring | out-file $passwordFile
}

$password = Get-Content $passwordFile | convertto-securestring
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password