이 문서는 Crowd Powershell 활용하여 Excel로 사용자 생성 및 그룹 추가 가이드를 공유하기 위해 작성되었다.
도구명 | Crowd, Powershell |
---|---|
비고 |
Powershell 이용하여 Excel로 사용자 생성 및 그룹 추가
설정
- Application → Crowd 선택
- Application Name, Password 사용
- Remote address 선택 후 Script를 실행 할 서버 IP 입력
Excel에 정보 넣기
- 해당 형식으로 생성(첨부파일). 각 행마다 그룹 칸에 값이 없을 때까지 그룹 추가됨
Powershell Script
- 윈도우 키 → Powershell ISE 실행 → 새로 만들기
- 2행에 Crowd 주소
6,7 행에 crowd application ID, 및 Password
Script 실행 후 해당 Excel 파일 선택 가능
#Url 및 api 주소 $base_url = "http://10.1.25.100:8095" $user_api = "/crowd/rest/usermanagement/1/user" # crowd application 정보 $user ="crowd" $password = "crowd" $LogArray = @() # SSL 인증서 오류 일 경우, SSL 인증서 문제 없을 경우 해당 부분 필요 X Add-Type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class TrustAllCertsPolicy : ICertificatePolicy { public bool CheckValidationResult( ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem){ return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls, [Net.SecurityProtocolType]::Tls11, [Net.SecurityProtocolType]::Tls12, [Net.SecurityProtocolType]::Tls13, [Net.SecurityProtocolType]::Ssl3 # 인증 인코딩 function Get-BasicAuthCreds { param([string]$Username, [string]$Password) $AuthString = "{0}:{1}" -f $Username,$Password $AuthBytes = [System.Text.Encoding]::ASCII.GetBytes($AuthString) return [Convert]::ToBase64String($AuthBytes) } $BasicCreds = Get-BasicAuthCreds -Username $user -Password $password; #엑셀 파일 선택 및 열기 $FileBrowser = New-Object System.Windows.Forms.OpenFileDialog $FileBrowser.Title = "선택하세요" $FileBrowser.Filter = "xlsx (*.xlsx)| *.xlsx" [void]$FileBrowser.ShowDialog() $FilePath = $FileBrowser.FileName.ToString() $Excel = New-Object -ComObject Excel.Application $Excel.Visible = $false $WorkBook = $Excel.Workbooks.add($FilePath) $sheet = $WorkBook.worksheets.Item(1) #첫행 무시 $row = 2 $usernumber = 0 #엑셀 라인 읽기, 1열의 값이 없을 시 중지 while($Sheet.Cells.Item($row,1).Text -ne ""){ # 열 라인, 그룹 시작 $groupcol = 7 # 로그 $Log = "" # 각 행 유저 정보 가져오기 $adduser = $Sheet.Cells.Item($row,1).Text $pass = $Sheet.Cells.Item($row,2).Text $first_name = $Sheet.Cells.Item($row,3).Text $last_name = $Sheet.Cells.Item($row,4).Text $display_name = $Sheet.Cells.Item($row,5).Text $email = $Sheet.Cells.Item($row,6).Text #해당 유저 존재여부 조회 try{ $user_check = Invoke-WebRequest -Uri "${base_url}${user_api}?username=${adduser}" -Method Get -ContentType 'application/json' -Headers @{"Authorization"="Basic $BasicCreds"} } catch { $user_check = $null } # user 추가하기 if($user_check -eq $null){ $Body1 = '{"name":"' + ${adduser} + '", "password":{"value": "' + ${pass} +'"}, "active": true, "first-name": "'+ ${first_name} + '", "last-name": "'+ ${last_name} +'", "display-name": "'+ ${display_name} + '", "email": "' + ${email} + '"}' # 한글 처리 $Body = [System.Text.Encoding]::UTF8.GetBytes($Body1) $user_add = Invoke-WebRequest -Uri "${base_url}${user_api}.json" -Method Post -ContentType 'application/json' -Headers @{"Authorization"="Basic $BasicCreds"} -Body $Body $result = [System.Text.Encoding]::UTF8.GetString($user_add.RawContentStream.ToArray()) | ConvertFrom-json $username = $result.name $Log += "Username: ${username} 생성되었습니다. " #Group 조회 while($Sheet.Cells.Item($row,$groupcol).Text -ne ""){ $group = $Sheet.Cells.Item($row,$groupcol).Text $group_list = "/crowd/rest/usermanagement/1/group.json?groupname=${group}" $group_check = $null try{ $group_check = Invoke-WebRequest -Uri "${base_url}${group_list}" -Method Get -ContentType 'application/json' -Headers @{"Authorization"="Basic $BasicCreds"} } catch{ $group_check = $null $Log += "${group}이 없습니다. " } $group_api = "/crowd/rest/usermanagement/1/group/user/direct.json?groupname=${group}" #Group 추가 if($group_check -ne $null){ try{ $form1 = '{"name": "' + ${adduser} + '"}' $form = [System.Text.Encoding]::UTF8.GetBytes($form1) $group_add = Invoke-WebRequest -Uri "${base_url}${group_api}" -Method Post -ContentType 'application/json' -Headers @{"Authorization"="Basic $BasicCreds"} -Body $form $Log += "${group}에 추가했습니다. " } catch{ $Log += "${group}에 이미 있습니다. " } } $groupcol++ } $LogArray += $Log $usernumber++ } else { $LogArray += "${adduser} is already exist" } $row++ } $row -= 2 $LogArray += "시도: ${row} 성공: ${usernumber}" $date = Get-Date -UFormat %Y%m%d%H%M $LogArray > .\${date}_CrowdAdd.log