Yammer REST API를 사용한 사용자삭제 Powershell script

Yammer REST API 를 사용하여 여러 사용자를 한번에 지우는 방법입니다.

기본적으로 제공되는 API 는 단일 사용자만 지울 수 있기에 파워쉘 스크립트를 이용하였습니다.

아래의 Article 을 참고하여 스크립트를 작성하였습니다.
https://helshabini.wordpress.com/2016/06/06/bulk-create-yammer-groups-using-windows-powershell/ https://blog.kloud.com.au/2015/06/26/programmatically-interacting-with-yammer-via-powershell-part-1/ https://blog.kloud.com.au/2015/08/14/programmatically-interacting-with-yammer-via-powershell-part-2/

이 작업은 아래와 같은 단계로 이루어 집니다

  1. Yammer 앱 등록을 통해 Client ID 와 secret key  획득
  2. [Powershell] Access-token 파일 생성 - GetAccessToken.ps1
  3. [Powershell] 전체 사용자 명단 (csv) 다운로드 - GetAllUsers.ps1
  4. 삭제할 사용자 명단 (csv) 만들기
  5. [Powershell] csv 파일을 읽어 사용자 삭제 - DeleteUsers.ps1

아래에 단계별로 상세 설명합니다.

  1. Yammer 앱 등록을 통해 Client ID 와 secret key  획득
관리자 계정으로 Yammer 에 로그인 하여 Apps 페이지로 이동합니다. 이동한 액 디렉토리 페이지에서 "Create Apps" 를 클릭합니다 "Register New App" 을 클릭하면 뜨는 창에서 필드 값을 채웁니다Application Name 은 Unique 해야 합니다.이 때, Redirect URI 만 현재 Yammer URL  로 맞춰 주시길 바랍니다. 다음 버튼을 클릭하면 앱이 등록 되며, 아래와 같이 ID 값 들이 나옵니다.이 정보들을 파워쉘에서 사용해야 하니 잘 보관 해 주십시오.
  1. [Powershell] Access-token 파일 생성 - GetAccessToken.ps1
GetAccessToken.ps1 파일의 내용을 수정해야 합니다아래와 같이 세개의 파라미터 값을 변경해 주십시오. 값은 이전 단계의 앱 등록시 얻은 ID 값들을 사용하시면 됩니다. 변경사항을 저장하고 이 스크립트를 실행하면
  • 모든 익스플로러 창을 닫고
  • Yammer 에 로그인 하고
  • 파워쉘 에서 OK를 클릭합니다
  • 그러면 access_token 파일을 다운받을 수 있습니다
  • 이 파일을 C:\Workspace 폴더에 저장해 주십시오
 $OUTPUT= [System.Windows.Forms.MessageBox]::Show("Get Access-token after closing all Internet Explorer windows." , "Confirm" , 4)if ($OUTPUT -eq "YES" ){    get-process iexplore | stop-process    Sleep 5    getAccessToken}else{}function getAccessToken {    ##############################################################    ############# Change This Parametors #########################    ##############################################################    $clientID = "cNFdxGuP9SlqztmL5*****"    $clientsecret = "6LmmaXbkGy5WrsZhoOVCGHdRMqjRifQUL4qfP*****"    $RedirURL = "https://www.yammer.com/jechoi1.onmicrosoft.com"    ##############################################################    $ie = New-Object -ComObject internetexplorer.application    $ie.Visible = $true    $ie.Navigate2("https://www.yammer.com/dialog/oauth?client_id=$clientID&redirect_uri=$RedirURL")     [System.Windows.Forms.MessageBox]::Show("After login at Yammer, Please Click OK" , "Status")        $ShellWindows = (New-Object -ComObject Shell.Application).Windows()     $Authcode = "1"    Foreach($IE2 in $ShellWindows)     {         $FullName = $IE2.FullName         Write-Host $FullName        If($FullName -ne $NULL)         {             $FileName = Split-Path -Path $FullName -Leaf               If($FileName.ToLower() -eq "iexplore.exe")             {                 $Title = $IE2.LocationName                 $URL = $IE2.LocationURL                 $Matches = $URL -split "home?code=", 0, "simplematch"                $Authcode = $Matches[1]                         }         }     }      get-process iexplore | stop-process    Sleep 5    Write-Host $Authcode    $ie = New-Object -ComObject internetexplorer.application    $ie.Visible = $true    $ie.Navigate2("https://www.yammer.com/oauth2/access_token.json?client_id=$clientID&client_secret=$clientsecret&code=$Authcode")}
  1. [Powershell] 전체 사용자 명단 (csv) 다운로드 - GetAllUsers.ps1
Access_token.json 파일이 C:\Workspace 폴더에 위치하고 있어야 합니다.다른 경로에 있다면 스크립트 파일을 열어서 적절히 수정해 주십시오준비된GetAllUsers.ps1을 실행하면 C:\workspace 폴더에 AllUsers.csv 파일이 생성됩니다.해당 파일을 열어보면 모든 Yammer 사용자 명단이 내려받아져 있는 것을 확인할 수 있습니다.
 $TokenPath = 'C:\Workspace\access_token.json'###Reading token#############################$Openjson = $(Get-Content $TokenPath ) -join "`n" | ConvertFrom-Json$token = $Openjson.access_token.token######################################## ###Creating header##########################$Headers = @{"Accept" = "*/*""Authorization" = "Bearer "+$token"accept-encoding" = "gzip""content-type"="application/json"}##################################################$getYammerUsersUri = "https://www.yammer.com/api/v1/users.json" $getYammerUsersResponse = Invoke-RestMethod -Method Get -Uri $getYammerUsersUri -Header $Headers$getYammerUsersResponse | Export-Csv 'C:\Workspace\AllUsers.csv'
  1. 삭제할 사용자 명단 (csv) 만들기
방금 다운로드 받은 AllUser 파일을 복사하여 삭제할 대상의 명단을 만듭니다파일명은 DeleteUsers.csv 로 저장합니다.
  1. [Powershell] csv 파일을 읽어 사용자 삭제 - DeleteUsers.ps1
DeleteUsers.ps1 를 실행하면 C:\workplace\deleteusers.csv 파일을 읽어 사용자를 삭제 합니다.
 $TokenPath = 'C:\Workspace\access_token.json'$CSVPath = 'C:\Workspace\DeleteUsers.csv'###Reading token##############################$Openjson = $(Get-Content $TokenPath ) -join "`n" | ConvertFrom-Json$token = $Openjson.access_token.token#################################################### ###Creating header################################$Headers = @{"Accept" = "*/*""Authorization" = "Bearer "+$token"accept-encoding" = "gzip""content-type"="application/json"}###################################################Reading users to delete ###############################$DeleteUsers = Import-Csv -Path $CSVPath foreach ($DeleteUser in $DeleteUsers){    $userID = $DeleteUser.id     $DeleteUserUri = "https://www.yammer.com/api/v1/users/$userID"     $DeleteUserResponse = Invoke-RestMethod -Method Delete -Uri $DeleteUserUri -Header $Headers}####################################################################