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
}
####################################################################


Comments (0)

Skip to main content