Pendoで訪問者を識別するために、WindowsのActive Directory(AD)に保存されているデータをPendo Launcher拡張機能に渡すことができます。また、スクリプトでADデータストアにアクセスし、ユーザー属性データを訪問者の管理対象エンドポイント上のレジストリに渡すことも可能です。
この記事では、Pendoにメタデータとして提供できるユーザー属性データをADで特定する方法と、ADに保存されているデータを取得し、PowerShellスクリプトを使用してデータをPendo Launcherに適用する方法について説明します。
スキーマ
スキーマは、Pendoに提供できる訪問者情報の構造とタイプを定義します。スキーマはJavaScript Object Notation(JSON)形式で、キーと値のペア(プロパティ)で構成されています。Pendoのメタデータをカスタマイズするためにスキーマを追加できます。たとえば、「visitor」キーはパソコンのレジストリにある「id」プロパティを取得します。
レジストリで使用する正確なプロパティ値は、インストール状況およびサードパーティのPendoインストールで使用するデータによって異なります。
JSON形式の詳細については、W3SchoolsのJSON – はじめにの記事を参照してください。
使用可能なプロパティのリストを取得する
Windows ADには、ユーザーやペルソナをより的確に識別するために使用できる、ユーザーに関する多くのプロパティがあります。PowerShellを使用して、使用可能なプロパティを確認できます。
Windows ADモジュールでPowerShellターミナルを開き、次のコマンドを実行します:Get-ADUser
-Identity “<User’s SID>” -Properties * | Select *
。
Pendoユーザーのインストールスクリプトをカスタマイズする
インストールプロセスの一環として、「PendoUserInstall.ps1」というPowerShellログインスクリプトを作成します。これにより、ユーザーの訪問者IDとメタデータを設定できるようになります。
このセクションでは、Pendoのメタデータにユーザーの役職を追加する例を用いて、Pendoに追加の識別情報を渡すためにPendoUserInstall.ps1スクリプトを変更する方法を説明します。
1. ユーザーのSIDを含むスクリプトに変更します。これにより、AD管理者スクリプトからユーザーデータを取得できるようになります。
# 現在のユーザーのSIDを取得
$sid = ([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
2. コードブロックから次の行を削除します:$visitorJson=
"{ `"id`": `"$($visitorId)`" }"
3. メタデータファイルの内容を更新し、削除済みの$visitorJson
変数の代わりに、$visitorId
変数のみを取得するようにします。スクリプトに以下のコードブロックを追加します。
# 管理スクリプトが読み込むメタデータファイルにメタデータを書き込む
New-Item "C:\temp\PendoMetadata.txt"
Set-Content -Path "C:\temp\PendoMetadata.txt"-Value $visitorId
4. ユーザーのSIDを取得するための新規ファイルを作成します。スクリプトに以下のコードブロックを追加します。
# ユーザーのSIDを設定
New-Item "C:\temp\PendoUserSID.txt"
Set-Content -Path "C:\temp\PendoSID.txt" -Value $sid
PendoUserInstall.ps1スクリプトの全文は、以下のとおりです。
# 現在のユーザーのSIDを取得
$sid = ([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
# ログインしているユーザーの訪問者IDを取得
$visitorId = $env:username + “@yourdomain.com”
# メタデータのパスが存在することを確認
if(!(Test-Path “C:\temp”)) {
New-Item “C:\” -Name “temp” -ItemType “directory” -ErrorAction SilentlyContinue
}
# 管理スクリプトが読み込むメタデータファイルにメタデータを書き込む
New-Item “C:\temp\PendoMetadata.txt”
Set-Content -Path “C:\temp\PendoMetadata.txt” -Value $visitorId
# ユーザーのSIDを設定
New-Item “C:\temp\PendoUserSID.txt”
Set-Content -Path "C:\tempPendoUserSID.txt" -Value $sid
これにより、管理スクリプトでGet-ADUser
を使用して、以下に説明する必要情報をユーザーから取得でるようになります。
Pendo管理者のインストールスクリプトをカスタマイズする
「PendoAdminInstall.ps1」スクリプトを更新することで、PendoUserInstall.ps1スクリプトで保存したユーザーのSID値を取得できるようになります。これにより、ADから必要な情報を引き出すことができます。
以降に示す例では、ユーザーの役職情報を収集してレジストリに保存します。ステップ3を繰り返し、必要に応じてJSONペイロードを拡張することで、複数のフィールドを追加できます。
1. メタデータファイルから送られてくる情報を、あらかじめ定義されたJSONスキーマではなく、訪問者IDとして取得するようスクリプトを変更します。
# 訪問者IDを取得
$visitorId = Get-Content -Path “C:\temp\PendoMetadata.txt”
2. ユーザーのSIDを取得するための新規変数を追加します。
# ユーザーのSIDを取得
$userSID = Get-Content -Path “C:\temp\PendoUserSID.txt”
3. ユーザーのSIDを使用して、ADからユーザーの役職情報を収集します。
# ユーザーの役職を取得
$userJobTitle = Get-ADUser -Identity $userSID -Properties Title | Select Title ExcludeProperty Title
4. Pendoが想定するJSONスキーマでユーザー情報を定義します。
# 訪問者のJSONペイロードを定義
$visitorJson = “{ ‘“id’”: ‘“$($visitorId)’” , “JobTitle”: ‘“$($userJobTitle)’” }”
5. ユーザーのSIDを取得するために使用した新規ファイルを、他の一時ファイルとともに削除します。
# 削除
New-Item “C:\temp\PendoMetadata.txt”
New-Item “C:\temp\PendoUserSID.txt”
New-Item “C:\temp\”
PendoAdminInstall.ps1スクリプトの全文は、以下のとおりです。
# メタデータファイルを待つ
while (!(Test-Path "C:\temp\PendoMetadata.txt")){ Start-Sleep 10 }
# 訪問者IDを取得
$visitorId = Get-Content -Path "C:\temp\PendoMetadata.txt"
$registryPath = "HKLM:\Software\Policies\Google\Chrome\3rdparty\extensions\epnhoepnmfjdbjjfanpjklemanhkjgil\policy"
# ユーザーのSIDを取得
$userSID = Get-Content -Path "C:\temp\PendoSID.txt"
# ユーザーの役職を取得
$userJobTitle = Get-ADUser -Identity $userSID -Properties Mail | Select Mail -ExcludeProperty Mail
# レジストリに訪問者のJSONを設定
$visitorJson= "{ `"id`": `"$($visitorId)`", `"JobTitle`": `"$($userJobTitle)`" }"
New-ItemProperty -Path $registryPath -Name "visitor" -Value $visitorJson -Type ExpandString
# 削除
Remove-Item -Path "C:\temp\PendoMetadata.txt"
Remove-Item -Path "C:\temp\PendoSID.txt"
Remove-Item -Path "C:\temp”