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)に慣れている限り、これを完全に行うことができます...

次に例を示します。

 $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 に答える