コンテンツ検索を使用してメールボックスと OneDrive for Business サイトでユーザーのリストを探す

セキュリティ & コンプライアンス PowerShell には、電子情報開示に関連する時間のかかるタスクを自動化できる多数のコマンドレットが用意されています。 現時点では、Microsoft Purview コンプライアンス ポータルでコンテンツ検索を作成して多数のカストディアン コンテンツの場所を検索するには、時間と準備が必要です。 検索を作成する前に、各OneDrive for Business サイトの URL を収集し、各メールボックスとOneDrive for Business サイトを検索に追加する必要があります。 今後のリリースでは、コンプライアンス ポータルでこれを行う方が簡単になります。 それまでは、この記事のスクリプトを使用して、このプロセスを自動化できます。 このスクリプトでは、organizationの MySite ドメインの名前 (URL https://contoso-my.sharepoint.comの contoso など)、ユーザーのメール アドレスの一覧、新しいコンテンツ検索の名前、使用する検索クエリの入力を求められます。 スクリプトは、リスト内の各ユーザーのOneDrive for Business URL を取得し、指定した検索クエリを使用して、リスト内の各ユーザーのメールボックスとOneDrive for Businessサイトを検索するコンテンツ検索を作成して開始します。

ヒント

E5 のお客様でない場合は、90 日間の Microsoft Purview ソリューション試用版を使用して、Purview の追加機能が組織のデータ セキュリティとコンプライアンスのニーズの管理にどのように役立つかを確認してください。 Microsoft Purview コンプライアンス ポータルのトライアル ハブで今すぐ開始してください。 サインアップと試用期間の詳細については、こちらをご覧ください。

アクセス許可とスクリプト情報

  • 手順 3 でスクリプトを実行するには、コンプライアンス ポータルの電子情報開示マネージャー役割グループのメンバーであり、SharePoint Online グローバル管理者である必要があります。

  • 手順 2 で作成したユーザーの一覧と手順 3 のスクリプトを同じフォルダーに保存してください。 これでスクリプトの実行が容易になります。

  • スクリプトには、最小限のエラー処理が含まれています。 その主な目的は、各ユーザーのメールボックスとOneDrive for Businessサイトをすばやく簡単に検索することです。

  • このトピックで提供されるサンプル スクリプトは、Microsoft 標準サポート プログラムまたはサービスではサポートされていません。 サンプル スクリプトは現状のまま提供され、いかなる保証も伴いません。 さらに、Microsoft は、商品性、特定目的への適合性を含む一切の黙示の保証をいたしかねます。 本サンプル スクリプトおよびドキュメントの使用または性能に起因するすべてのリスクは、お客様が負うものとします。 サンプル スクリプトおよびドキュメントを使用したこと、または使用できなかったことに伴って生じるいかなる損害 (業務利益の損失、業務の中断、業務情報の損失、金銭上の損失、その他一切の損害) についても、Microsoft、Microsoft に帰属する作者、スクリプトの作成、製造、または納入に関与したその他のすべての人員は、いかなる場合も責めを負わないものとします。

手順 1: SharePoint Online 管理シェルをインストールする

最初の手順は、SharePoint Online 管理シェルをインストールすることです。 この手順ではシェルを使用する必要はありませんが、手順 3 で実行するスクリプトで必要な前提条件が含まれているため、シェルをインストールする必要があります。 これらの前提条件により、スクリプトは SharePoint Online と通信して、OneDrive for Business サイトの URL を取得できます。

[SharePoint Online 管理シェル環境のセットアップ] に移動し、手順 1 と手順 2 を実行して SharePoint Online 管理シェルをインストールします。

手順 2: ユーザーの一覧を生成する

手順 3 のスクリプトでは、メールボックスと OneDrive アカウントを検索してユーザーの一覧を検索するコンテンツ検索を作成します。 テキスト ファイルにメール アドレスを入力するか、PowerShell でコマンドを実行してメール アドレスの一覧を取得し、ファイルに保存できます (手順 3 でスクリプトを保存するフォルダーと同じフォルダーにあります)。

organization内のすべてのユーザーの電子メール アドレスの一覧を取得し、 という名前Users.txtのテキスト ファイルに保存するために実行できる、Exchange Online PowerShell コマンドを次に示します。

Get-Mailbox -ResultSize unlimited -Filter { RecipientTypeDetails -eq 'UserMailbox'} | Select-Object PrimarySmtpAddress > Users.txt

このコマンドを実行した後は、必ず ファイルを開き、 PrimarySmtpAddressプロパティ名 を含むヘッダーを削除してください。 テキスト ファイルには、電子メール アドレスの一覧だけが含まれている必要があります。それ以外は何も含まれていません。 電子メール アドレスの一覧の前後に空白の行がないことを確認します。

この手順でスクリプトを実行すると、次の情報の入力が求められます。 スクリプトを実行する前に、この情報を準備しておいてください。

  • ユーザーの資格情報 - スクリプトは資格情報を使用して SharePoint Online にアクセスし、OneDrive for Business URL を取得し、Security & Compliance PowerShell に接続します。

  • MySite ドメインの名前 - MySite ドメインは、organization内のすべてのOneDrive for Business サイトを含むドメインです。 たとえば、MySite ドメインの URL が の場合は https://contoso-my.sharepoint.com、スクリプトから MySite ドメインの名前の入力を求められたときに「」と入力 contoso します。

  • 手順 2 のテキスト ファイルのパス名 - 手順 2 で作成したテキスト ファイルのパス名。 テキスト ファイルとスクリプトが同じフォルダーにある場合は、テキスト ファイルの名前を入力します。 それ以外の場合は、テキスト ファイルの完全なパス名を入力します。

  • コンテンツ検索の名前 - スクリプトによって作成されるコンテンツ検索の名前。

  • 検索クエリ - コンテンツ検索で使用される検索クエリが作成され、実行されます。 検索クエリの詳細については、「 電子情報開示のキーワード クエリと検索条件」を参照してください。

このスクリプトを実行するには、以下の手順を実行します。

  1. .ps1 のファイル名サフィックスを使用して、次のテキストをWindows PowerShellスクリプト ファイルに保存します。例: SearchEXOOD4B.ps1。 手順 2 でユーザーの一覧を保存したのと同じフォルダーにファイルを保存します。

    # This PowerShell script will prompt you for the following information:
    #    * Your user credentials
    #    * The name of your organization's MySite domain
    #    * The pathname for the text file that contains a list of user email addresses
    #    * The name of the Content Search that will be created
    #    * The search query string
    # The script will then:
    #    * Find the OneDrive for Business site for each user in the text file
    #    * Create and start a Content Search using the above information
    # Get user credentials
    if (!$credentials)
    {
        $credentials = Get-Credential
    }
    # Get the user's MySite domain name.  We use this to create the admin URL and root URL for OneDrive for Business
    $mySiteDomain = Read-Host "What is your organization's MySite domain?  For example,  'contoso' for 'https://contoso-my.sharepoint.com'"
    $AdminUrl = "https://$mySiteDomain-admin.sharepoint.com"
    $mySiteUrlRoot = "https://$mySiteDomain-my.sharepoint.com"
    # Get other required information
    $inputfile = read-host "Enter the file name of the text file that contains the email addresses for the users you want to search"
    $searchName = Read-Host "Enter the name for the new search"
    $searchQuery = Read-Host "Enter the search query you want to use"
    $emailAddresses = Get-Content $inputfile | where {$_ -ne ""}  | foreach{ $_.Trim() }
    # Connect to Security & Compliance PowerShell
    if (!$s -or !$a)
    {
        Import-Module ExchangeOnlineManagement
        Connect-IPPSSession
    }
    
    # Load the SharePoint assemblies from the SharePoint Online Management Shell
    # To install, go to https://go.microsoft.com/fwlink/p/?LinkId=255251
    if (!$SharePointClient -or !$SPRuntime -or !$SPUserProfile)
    {
        $SharePointClient = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
        $SPRuntime = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
        $SPUserProfile = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")
        if (!$SharePointClient)
        {
            Write-Error "SharePoint Online Management Shell isn't installed, please install from: https://go.microsoft.com/fwlink/p/?LinkId=255251 and then run this script again"
            return;
        }
    }
    if (!$spCreds)
    {
        $spCreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($credentials.UserName, $credentials.Password)
    }
    # Add the path of the User Profile Service to the SPO admin URL, then create a new webservice proxy to access it
    $proxyaddr = "$AdminUrl/_vti_bin/UserProfileService.asmx?wsdl"
    $UserProfileService= New-WebServiceProxy -Uri $proxyaddr -UseDefaultCredential False
    $UserProfileService.Credentials = $credentials
    # Take care of auth cookies
    $strAuthCookie = $spCreds.GetAuthenticationCookie($AdminUrl)
    $uri = New-Object System.Uri($AdminUrl)
    $container = New-Object System.Net.CookieContainer
    $container.SetCookies($uri, $strAuthCookie)
    $UserProfileService.CookieContainer = $container
    Write-Host "Getting each user's OneDrive for Business URL"
    $urls = @()
    foreach($emailAddress in $emailAddresses)
    {
        try
        {
            $prop = $UserProfileService.GetUserProfileByName("i:0#.f|membership|$emailAddress") | Where-Object { $_.Name -eq "PersonalSpace" }
            $url = $prop.values[0].value
            $furl = $mySiteUrlRoot + $url
            $urls += $furl
            Write-Host "-$emailAddress => $furl"
        }
        catch
        {
            Write-Warning "Could not locate OneDrive for $emailAddress"
        }
    }
    Write-Host "Creating and starting the search"
    $search = New-ComplianceSearch -Name $searchName -ExchangeLocation $emailAddresses -SharePointLocation $urls -ContentMatchQuery $searchQuery
    # Finally, start the search and then display the status
    if($search)
    {
        Start-ComplianceSearch $search.Name
        Get-ComplianceSearch $search.Name
    }
    
  2. Windows PowerShell開き、スクリプトを保存したフォルダーと手順 2 のユーザーの一覧に移動します。

  3. スクリプトを開始します。例えば:

    .\SearchEXOOD4B.ps1
    
  4. 資格情報の入力を求められたら、メール アドレスとパスワードを入力し、[OK] をクリック します

  5. スクリプトによってプロンプトが表示されたら、次の情報を入力します。 各情報を入力し、 Enter キーを押します。

    • MySite ドメインの名前。

    • ユーザーの一覧を含むテキスト ファイルのパス名。

    • コンテンツ検索の名前。

    • 検索クエリ (コンテンツの場所のすべての項目を返すには、この空白のままにします)。

    スクリプトは、各OneDrive for Business サイトの URL を取得し、検索を作成して開始します。 Security & Compliance PowerShell で Get-ComplianceSearch コマンドレットを実行して検索の統計情報と結果を表示するか、コンプライアンス ポータルの コンテンツ検索 ページに移動して検索に関する情報を表示できます。