DLPポリシーに含まれているコネクタをPowerShellを使って割当先グループ（ビジネス、非ビジネス、ブロック済み）ごとにCSVに一覧出力する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357828/beeaccc0-c3a2-1077-85ac-dd65497cc07b.png)

Power Platform 管理センターでDLPポリシーの設定や設定確認を実施したことがあるからはご存じかと思いますが、DLPポリシーの設定画面はかなり操作性が悪いです。そのため、DLPポリシーをひとつ設定する作業（設定後の値確認も含む）で1時間前後かかる場合があります。

この作業を短縮するために設定確認用のPowerShellスクリプトを作りました。

https://github.com/wataruf01/Microsoft365/blob/main/PowerShell/GetAndSetDLPPolicy/GetDLPPolicy.ps1

設定用のスクリプトについては以下の投稿に記載しています。
https://qiita.com/wataruf01/items/90218c7e7dd0958b3db3

#使い方
まずは、スクリプトを実行するために必要なモジュールをPCにインストールします。管理者権限で下記コマンドを実行してください。

```powershell:モジュールのインストールコマンド
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
Install-Module -Name Microsoft.PowerApps.PowerShell -AllowClobber
```

モジュールのインストールが完了したら、下記スクリプトを使います。
以下の2箇所はテナントによって置き換えてください。
・実行アカウントのID/パスワード
・対象のDLPポリシーのID

```powershell:DLPポリシーをCSVに出力するスクリプト
#実行アカウント
$adminUserName  = "XXX@XXX.onmicrosoft.com"
$securePassword = "XXX" | ConvertTo-SecureString -AsPlainText -Force
Add-PowerAppsAccount -Username $adminUserName -Password $securePassword

#対象のDLPポリシーを指定
$dlpPolicy = Get-DlpPolicy -PolicyName "XXXX-XXXX-XXX-XXXX-XXXX"

$connectors = @()

$businessDataGroup = $DLPPolicy.connectorGroups | where classification -EQ "Confidential"
foreach($connector in $businessDataGroup.connectors)
{
    $obj = New-Object PSObject
    $obj | Add-Member -MemberType NoteProperty -Name Policy -Value $DLPPolicy.displayName
    $obj | Add-Member -MemberType NoteProperty -Name Group  -Value "BusinessDataGroup"
    $obj | Add-Member -MemberType NoteProperty -Name Name   -Value $connector.name
    $obj | Add-Member -MemberType NoteProperty -Name ID     -Value $connector.id
    $obj | Add-Member -MemberType NoteProperty -Name Type   -Value $connector.type
    $connectors += $obj
}

$nonBusinessDataGroup = $DLPPolicy.connectorGroups | where classification -EQ "General"
foreach($connector in $nonBusinessDataGroup.connectors)
{
    $obj = New-Object PSObject
    $obj | Add-Member -MemberType NoteProperty -Name Policy -Value $DLPPolicy.displayName
    $obj | Add-Member -MemberType NoteProperty -Name Group  -Value "NonBusinessDataGroup"
    $obj | Add-Member -MemberType NoteProperty -Name Name   -Value $connector.name
    $obj | Add-Member -MemberType NoteProperty -Name ID     -Value $connector.id
    $obj | Add-Member -MemberType NoteProperty -Name Type   -Value $connector.type
    $connectors += $obj
}

$blockedGroup = $DLPPolicy.connectorGroups | where classification -EQ "Blocked"
foreach($connector in $blockedGroup.connectors)
{
    $obj = New-Object PSObject
    $obj | Add-Member -MemberType NoteProperty -Name Policy -Value $DLPPolicy.displayName
    $obj | Add-Member -MemberType NoteProperty -Name Group  -Value "BlockedGroup"
    $obj | Add-Member -MemberType NoteProperty -Name Name   -Value $connector.name
    $obj | Add-Member -MemberType NoteProperty -Name ID     -Value $connector.id
    $obj | Add-Member -MemberType NoteProperty -Name Type   -Value $connector.type
    $connectors += $obj
}

$connectors | Export-Csv -Path .\DLPPolicy.csv -Encoding UTF8 -NoTypeInformation
```

テナントによって置き換える対象は以下の2つです。

ひとつめ。実行アカウントのID/パスワード。<font color="Red">
$adminUserName  = "XXX@XXX.onmicrosoft.com"
$securePassword = "XXX" | ConvertTo-SecureString -AsPlainText -Force
</font>

ふたつめ。対象チームのID。<font color="Red">
 #対象のDLPポリシーを指定
$dlpPolicy = Get-DlpPolicy -PolicyName "XXXX-XXXX-XXX-XXXX-XXXX"
</font>

対象のDLPポリシーのIDはPower Platform 管理センターから入手できます。該当のDLPポリシーを開いたときにアドレスバーに表示されるGUIDがそのDLPポリシーのIDです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357828/a27295bf-253f-9621-44bf-7ccf0aac5a76.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357828/6a71c8d7-5323-032d-a8f0-318b54c3c7d8.png)

この部分をコピーして先ほどのスクリプトで使用します。

#コマンドは新旧の2つがある。新しいほうを使用すること
Power Platform関連のコマンドを検索すると2種類のコマンドが見つかります。片方は旧コマンドで片方が新しく登場したほうです。<font color="Red">コマンド名に「Admin」が付いていないほうが新しいコマンドです。</font>

例：
既存のポリシーを取得する
・旧コマンド： Get-AdminDlpPolicy
・新コマンド： Get-DlpPolicy

これからPower PowerPlatform関連のスクリプトを作成する際は新コマンドを使うようにしたほうがよいです。

参考：
吉田の備忘録「Power Apps の特定のデータ損失ポリシーにカスタムコネクタを追加する方法」
https://memo.tyoshida.me/power-platform/powerapps/power-apps-dlp-custom-connector-powershell/

以上です。