2016-12-12 1 views
0

각 사용자 이름과 암호를 실행해야하는 일부 사용자 지정 cmdlet가 있습니다. 현재이 cmdlet을 실행할 때마다 자격 증명을 입력해야합니다. 사용 패턴은 일반적으로 짧은 시간 내에 여러 명령 조합을 실행합니다. 어쩌면 매 2 일마다 한 번씩 실행할 수 있습니다. 즉,이 짧은 기간 내에 여러 번 암호를 입력해야합니다.Powershell cmdlet 호출에서 암호의 메모리 내 캐싱

Powershell이 ​​일정 기간 동안 메모리에 자격 증명을 캐시 할 수있는 방법이 있습니까? 나는 이것이 보안상의 절충이라고 생각하지만, 비밀 번호가 SecureString으로 저장되어 있다는 것을 고려할 때 나는 기꺼이하겠다. 일부 cmdlet 호출에서 데이터를 저장할 수있는 영구 "세션"개체가있는 경우에도 작동하지만 이러한 기능을 식별 할 수는 없습니다.

UPDATE는 내가 .NET 코어를 표적으로하고있어 및 PSCredential 유형을 사용할 수 없었습니다 언급하는 것을 잊었다. 내 기본 cmdlet은 수업이 있습니다

[Parameter(
    Mandatory = true, 
    HelpMessage = "Credentials for access.", 
    ValueFromPipelineByPropertyName = true)] 
public PSCredential Credentials 
{ 
    get; 
    set; 
} 

그러나 Password 속성이 컴파일러 오류가 있습니다 역 참조를 시도 : 내 프로젝트의

Reference to type 'SecureString' claims it is defined in 'mscorlib', but it could not be found Contented.PowerShell..NETStandard,Version=v1.6 

관련 의존성은 다음과 같습니다

"dependencies": { 
    "Microsoft.PowerShell.5.ReferenceAssemblies": "1.0.0-*", 
    "System.Security.SecureString": "4.3.0" 
}, 

답변

0
$cred = Get-Credentials 

그리고 호출중인 명령에 $cred을 전달하십시오. 또는 (PS 세션에 대해 이야기하는 경우). 이렇게하면 세션을 다시 사용하여 많은 명령을 호출 할 수 있습니다.

$session = New-PSSession 
Invoke-Command -Session $session -ScriptBlock {} 
+0

불행히도 .NET 코어를 대상으로하기 때문에'PSCredential'이 작동하지 않습니다. 그 문제를 언급하는 걸 깜빡 했네. 미안해. –

+0

글쎄, 당신의 코드 또는 뭔가를 공유, 그 문제가 지금 무엇인지 완전히 불분명하다 – 4c74356b41

+0

업데이트 된 질문을 참조하십시오. –

관련 문제