我有一个脚本可以在给定用户的其他计算机上获取和设置用户的Windows环境变量。是否可以对该用户的密码进行硬编码,这样我每次运行脚本时都不必输入密码?
我的脚本看起来像这样:
$s5 = New-PSSession -computername testauto2, testauto3 -Credential
Domain\testautouser
invoke-command -session $s5[0] -scriptblock {[Environment]::GetEnvironmentVariable("TestBrowser", "user")}
答案 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)
}