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 "" -Properties * | Select */Pendoユーザーのインストールスクリプトをカスタマイズする
インストールプロセスの一環として、PendoUserInstall.ps1というPowerShellログインスクリプトを作成します。このスクリプトを使用して、ユーザーの訪問者IDおよびメタデータを設定できます。
このセクションでは、PendoUserInstall.ps1スクリプトを修正して、Pendoに追加の識別情報を渡す方法について、Pendoのメタデータにユーザーの役職を追加する例を使って説明します。
1. ユーザーのSIDを含むスクリプトに変更します。これにより、AD管理者スクリプトからユーザーデータを取得できるようになります。
# 現在のユーザーのSIDを取得
$sid =([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value2. コードブロックから次の行を削除します:
$visitorJson = "{ `\"id`\": `\"$($visitorId)`\" }"3. メタデータファイルの内容を更新し、削除済みの$visitorJson変数の代わりに、$visitorId変数のみを取得するようにします。スクリプトに以下のコードブロックを追加します。
# 管理スクリプトが読み込むメタデータファイルにメタデータを書き込む
New-Item "C:\temp\PendoMetadata.txt"
Set-Content -Path "C:\temp\PendoMetadata.txt" -Value $visitorId4. ユーザーのSIDを取得するための新規ファイルを作成します。スクリプトに以下のコードブロックを追加します。
# ユーザーのSIDを設定
New-Item "C:\temp\PendoUserSID.txt"
Set-Content -Path "C:\temp\PendoUserSID.txt" -Value $sidPendoUserInstall.ps1スクリプトの全文は、以下のとおりです。
# 現在のユーザーのSIDを取得
$sid =([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
# ログインしているユーザーの訪問者IDを取得
$visitorId = $env:username +"@yourdomain.com"# メタデータパスが存在することを確認します
テストパスが「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
# Set the user's SID
New-Item "C:\temp\PendoUserSID.txt"
Set-Content -Path "C:\temp\PendoUserSID.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を取得するための新規変数を追加します。
# Get User SID
$userSID = Get-Content -Path "C:\temp\PendoUserSID.txt"3. ユーザーのSIDを使用して、ADからユーザーの役職情報を収集します。
# Get User Job Title
$userJobTitle =(Get-ADUser -Identity $userSID -Properties Title).Title4. Pendoが想定するJSONスキーマでユーザー情報を定義します。
# Format 訪問者 JSON ペイロード
$visitorJson = 「{ `\"id`\": `\"$($visitorId)`\", `\"JobTitle`\": `\"$($userJobTitle)`\" }」5. ユーザーのSIDを取得するために使用されたファイルを削除します。
# Cleanup
Remove-Item -Path "C:\temp\PendoMetadata.txt"
Remove-Item -Path "C:\temp\PendoUserSID.txt"完全なPendoAdminInstall.ps1スクリプトは、以下のようになります。
# メタデータファイルを待つ
while(!(Test-Path "C:\temp\PendoMetadata.txt")) {
Start-Sleep 10
}# 訪問者IDを取得
$visitorId = Get-Content -Path "C:\temp\PendoMetadata.txt"RegistryPath ="HKLM:###SoftwarePoliciesGoogleChrome3rdparty¥Extensions¥epnhoepnmfjdbjfanpjklemanhkjgil¥Policy"
# Get User SID
$userSID = Get-Content -Path"C:¥UserSID¥PendoUserSID.txt"# Get User Job Title
$userJobTitle =(Get-ADUser -Identity $userSID -Properties Title).Title
# Set 訪問者 JSON in registry
$visitorJson ="{ `\"id`\": `\"$($visitorId)`\", `\"JobTitle`\": `\"$($userJobTitle)`\" } "
New-ItemProperty -Path $registryPath -Name"訪問者" -Value $visitorJson -Type ExpandString
# Cleanup
Remove-Item -Path"C: \tempPendoMetadata.txt"Remove-Item -Path "C:\temp\PendoUserSID.txt"