硬编码密码进入powershell“New-PSSession”

时间:2012-04-04 13:10:24

标签: powershell passwords

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

我的脚本看起来像这样:

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

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

2 个答案:

答案 0 :(得分:19)

是的 - 你可以完全做到这一点,只要你对安全隐患感到满意(某个文件中的PW)......

以下是一个例子:

 $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

答案 1 :(得分:8)

我在类似的情况下使用过这种方法。它肯定不是完美的,但它让我比在文件中硬编码密码更不紧张。我在第一次运行期间读取并存储密码,然后从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)
}