Active Directory のユーザー情報を PowerShell 操作で LINE WORKS に一括で連携


Active Directory のユーザー情報を PowerShell 操作で LINE WORKS に一括で連携

Active Directory のユーザー情報を PowerShell 操作で LINE WORKS に一括で連携する手順の一例を説明します。

Get-ADUser コマンドレット

Get-ADUser コマンドレットで、AD 上のユーザーを取得できます。

TITLE: Get-ADUser
URL: https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-aduser?view=win10-ps

本記事では一例として "LWUsers" OU に所属のユーザーを取得します。

Get-ADUser -Filter * -SearchBase "OU=LWUsers,DC=example,DC=com"

LINE WORKS メンバー追加 API

LINE WORKS の組織連携 API でメンバー追加できます。

TITLE: メンバー追加
URL: https://developers.worksmobile.com/jp/document/100300501?lang=ja

Inveke-RestMethod コマンドレットで PowerShell から LINE WORKS の組織連携 API を実行します。

ここでは、必須パラメータのみ利用しています。

mail -> email
sn -> name.lastName
givenName -> name.firstName

Get-ADUser コマンドレットで取得したユーザーの メール、姓、名の情報を LINE WORKS の属性値に連携しています。

SSO を想定したスクリプト例を記載していますが、SSO でない場合には上記に加えて privateEmail パラメータの指定が必要です。

スクリプト例は以下のとおりです。

Get-ADUser -Filter * -SearchBase "OU=LWUsers,DC=example,DC=com"| 
%{
$header = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$header.Add("Content-Type","application/json; charset=UTF-8")
$header.Add("consumerKey","<Server API Consumer Key>")
$header.Add("Authorization","Bearer <Server Token>")
$json = @"
{
"email": "$($_.mail)",
 "name": {
 "lastName": "$($_.sn)",
 "firstName": "$($_.givenName)"
 }
}
"@
$Uri = "https://apis.worksmobile.com/r/<API ID>/organization/v2/domains/<domainID>/users/$($_.UserPrincipalName)"
Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method Post -Header $header -Body $json
}

動作確認

スクリプト実行後に管理画面でユーザーが作成されていることを確認します。
また、それぞれのユーザーがログイン可能であることを確認します。