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/jec**.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