18

我有一个脚本可以为给定用户在其他计算机上获取和设置用户的 Windows 环境变量。是否可以对该用户的密码进行硬编码,这样我每次运行脚本时都不必输入密码?

我的脚本看起来像这样:

$s5 = New-PSSession -computername testauto2, testauto3 -Credential
Domain\testautouser

invoke-command -session $s5[0] -scriptblock {[Environment]::GetEnvironmentVariable("TestBrowser", "user")}
4

2 回答 2

24

是的-只要您对安全隐患感到满意(某处文件中的密码),您就可以完全做到这一点...

这是一个例子:

 $pw = convertto-securestring -AsPlainText -Force -String <insert pw here>
 $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "Domain\User",$pw
 $session = new-pssession -computername <computer> -credential $cred
于 2012-04-04T14:12:43.353 回答
9

我在类似的情况下使用过这种方法。这当然不是完美的,但它让我比在文件中硬编码密码更不紧张。我在第一次运行时读取并存储了密码,然后从 DPAPI 加密的文件中读取。我通常从内部网络上的共享位置运行脚本,并将加密的密码文件存储在本地计算机上的私有文件夹中。

$user = "Domain\testautouser"
$passwdFile = "$env:USERPROFILE\myscript-$user"
if ((Test-Path $passwdFile) -eq $false) {
  $cred = new-object system.management.automation.pscredential $user,
        (read-host -assecurestring -prompt "Enter a password:")
    $cred.Password | ConvertFrom-SecureString | Set-Content $passwdFile
}
else {
  $cred = new-object system.management.automation.pscredential $user,
        (Get-Content $passwdFile | ConvertTo-SecureString)
}
于 2012-04-04T17:45:51.617 回答