2017-12-19 6 views
-1

PowerShell을 사용하여 Active Directory 용 마이그레이션 스크립트를 작성해야합니다. 이 스크립트는 KeePass 용 Pleasant Password Server에 저장된 서버의 로컬 관리자의 암호를 업데이트합니다.REST API 메서드를 호출하여 로컬 관리자 암호를 업데이트하십시오.

먼저 Windows 로그인 자격 증명을 사용하여 KeePass에 로그인 한 다음 암호를 업데이트해야하는 서버를 검색합니다.

function Generate-Password { 
    $alphabets = "[email protected]#%^*" 

    $char = for ($i = 0; $i -lt $alphabets.Length; $i++) { $alphabets[$i] } 

    for ($i = 1; $i -le 16; $i++) { 
     Write-Host -NoNewline $(Get-Random $char) 
     if ($i -eq 16) { Write-Host `n } 
    } 
} 
$pass = Generate-Password 

암호가 내가 검색 한 서버에 대한 암호를 업데이트 할 위의 스크립트에서 생성 된 후 :

그래서, 위의 스크립트를 건너 뛰는 것은 내가 암호를 생성부터 시작됩니다 기능을 말했다.

예를 들어 : 나는 위의 기능 Generate-Password에 의해 서버를 검색 한 암호를 변경하려면 Server Details

에 대한 첨부 파일을 찾습니다.

function UpdatePassword { 
    $update = Invoke-RestMethod -Uri “$KeepassURL/api/v4/rest/credential/$CredentialID/password/$pass” -Headers $headers -Method Put -ContentType ‘application/json’ 
} 

내가 여기 문법 몇 가지 실수를하고 생각이 들어

, 나는 REST API method of PPS 사용. 생성 된 암호를 어떻게 전달합니까? 호출 된 REST 메서드에 $pass?

+0

"서버 세부 정보"는 무엇입니까? 예상대로 작동하지 않는 것은 무엇입니까? * 예상대로 작동하지 않는 이유는 무엇입니까? –

+0

서버 정보는 사용자 이름 = 서버 이름 (01)과 이에 인접한 암호를 의미합니다. 첨부 된 이미지를 찾으십시오! –

+0

음 ... 아니, 그렇지 않아. –

답변

0

당신이 참조 문서는 말한다 :

 
Example Credential (JSON)
{ Id: "2b45438a-2f4a-4d96-9ba9-058ea54252fb" Name: "Credential 0" Username: "Credential 0" Password: null Url: "" Notes: "" GroupId: "cfb2c08e-e990-43b7-99d1-c8e23e0ae00e" Created: "2013-11-18T10:14:27.8218898-07:00" Modified: "2015-06-01T13:26:12.336084-06:00" Expires: null ... }

그래서 당신은 아마 필요

 
PUT credential/:id  ** Update a credential ** 
Method     PUT 
Requires Authentication? Yes
Parameters id GUID for credential
Input type Credential Result type None

Credential 입력 유형의 문서는이 예를 JSON 문서를 보여줍니다 이런 식으로 할일 :

$CredentialID = '2b45438a-2f4a-4d96-9ba9-058ea54252fb' 
$uri = "$KeepassURL/api/v4/rest/credential/$CredentialID" 
$type = 'application/json' 
$body = @{ 
    'Id'  = $CredentialID 
    'Name'  = 'Credential 0' 
    'Username' = 'Credential 0' 
    'Password' = $pass 
    ... 
} 

Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -Body $body -ContentType $type 

$headers을 통해 이미 획득 한 인증 토큰을 전달한다고 가정합니다.

아직 테스트되지 않았으므로 본문이나 관련 항목에 모든 키/값 쌍이 필요한지 잘 모르겠습니다. 따라서 조금 놀아 봐야합니다.

+0

답변 해 주셔서 감사합니다. 변수 '$ CredentialID'에 스크립트를 더 진행하려면 GUID가 필요합니다. 그러나 클라이언트 (KeePass)는 GUID가 아닌 시스템의 'UUID'만 표시합니다. 서버용 GUID에 먼저 액세스하려면 다른 스크립트가 필요합니까? –

+0

https://stackoverflow.com/questions/246930/is-there-any-difference-between-a-guid-and-a-uuid –

+0

링크를 제공해 주셔서 감사합니다. –

관련 문제