2017-12-18 9 views
0

나는 실행하려고 :암호를 하드 코드하지 않고도 자동으로 원격 PowerShell 명령을 실행할 수 있습니까?

Invoke-Command -Computer $computer -ScriptBlock {...} 

을하지만 오류 "액세스가 거부되었습니다"WinRM이 오류가 나는 다음과 같은 사용하기 주저 :

Invoke-Command -Computer $computer -Credential $cred -ScriptBlock {...} 

$ cred하게는 여기서

$username = "John Doe" 
$password = "ABCDEF" 
$secstr = New-Object -TypeName System.Security.SecureString 
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)} 
$cred = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $username, $secstr 

원격으로 실행해야하며 침묵해야합니다. 따라서 PSCredential 팝업 창을 스크립트 중간에 표시 할 수 없습니다.

누군가 나를 보여 주거나 가능한 해결책을 제시 할 문서를 가리킬 수 있습니까?

미리 감사드립니다.

+0

다른 사람이 당신 외에이 스크립트를 사용하려고합니까? – TheIncorrigible1

+0

그냥 다른 사람이 볼 수 있습니다. – Ben

+0

@ TheMadTechnician의 해결책이 유용 할 수 있지만 암호화 된 암호는 사용자가 만든 컴퓨터의 사용자 계정으로 만 제한됩니다. 나는이 성질의 파일을 만들기보다는 레지스트리 키를 만드는 것이 좋습니다. – TheIncorrigible1

답변

1

암호를 암호화하여 디스크에 저장하면됩니다. 그런 다음 해당 파일을 읽고 암호화 된 암호를 보안 문자열로 변환하고 그로부터 자격 증명 개체를 만들 수 있습니다. 이 스크립트는 스크립트를 실행하는 데 사용되는 계정으로 수행해야합니다.

'$uper$secret1' | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Set-Content .\AccountPass.txt 

이렇게하면 암호가 디스크에 텍스트 파일로 저장됩니다. 텍스트 파일을 열 경우는 같은 모양 : 이제

01000000d08c9ddf0115d1118c7a00c04fc297eb01000000b584d55e9c47c942904dd30531d3ad070000000002000000000003660000c0000000100000003060266c3c4333a41e7f0e92176fb3d50000000004800000a000000010000000a2c8bbb2a3666c092004bb5e66fd440320000000636a413a6905789e0f3521cea3d8703405897cd5948da955192bcccd08990ffc1400000068c1 

5f8ac088ef0972dfce7d5a20ff3bbcdac4cc , 파일 암호를 해독 할 수있는 유일한 하나가 될 것입니다 만든 계정을하지만, 해당 계정은 실행할 수 있습니다

$Password = Get-Content .\AccountPass.txt | ConvertTo-SecureString 
$Creds = New-Object System.Management.Automation.PSCredential ("$env:UserDomain\$env:UserName",$Password) 

이제 비밀번호를 일반 텍스트로 저장하지 않고도 신임 오브젝트가 있습니다. 앞서 언급했듯이 텍스트 파일에서 암호를 해독 할 수있는 유일한 계정은 텍스트 파일을 생성 한 계정이며 암호가 변경 될 때마다 텍스트 파일을 업데이트해야합니다.

+0

순전히 DPAPI에만 의존하는 경우 컴퓨터로만 제한됩니다. – TheIncorrigible1

+0

그래서이 스크립트를 여러 대의 컴퓨터에서 실행하면 각 컴퓨터에 암호를 저장해야합니까? – Ben

+0

@Ben Correct. DPAPI는'ConvertTo-SecureString' 구현이 의존하는 현재 사용자 계정과 컴퓨터 지문 (가장 쉬운 용어)에 의존합니다. – TheIncorrigible1