Private/Update-RootComponentBehavior.ps1

Function Update-RootComponentBehavior {
    Param
    (
        [SolutionComponent[]]$Component,
        [string]$SolutionName,
        [Microsoft.Xrm.Tooling.Connector.CrmServiceClient]$Conn
    )
    Write-Verbose "Updating RootComponentBehaviors..."
    $entities = $Component | Where-Object -Property ComponentType -EQ 1
    $badRootComponents = $entities | Where-Object -Property rootcomponentbehavior -EQ 0 
    $updatedRootComponents = @()
    $metadata = Get-CrmEntityAllMetadata -Conn $Conn -EntityFilters Attributes | MetadataToHash

    Foreach ($component in $badRootComponents){
        $entityName = $metadata[$component.ObjectId].LogicalName;
        Write-Verbose ('Updating component behavior for {0}:{1}' -f $component.ObjectId, $entityName);        
        Remove-CrmEntityFromSolution -EntityName $entityName -Conn $conn -SolutionName $SolutionName
        Add-CrmEntityToSolution -EntityName $entityName -EntityMetadata $metadata[$component.ObjectId] -Conn $conn -SolutionName $SolutionName -IncludeSubComponentSet 'Custom'
        $updatedRootComponents += $Component
    }

    Write-Output $updatedRootComponents
}