Private/Update-RootComponentBehavior.ps1

Function Update-RootComponentBehavior {
    Param
    (
        [string]$SolutionName,
        [hashtable]$Metadata,
        [Microsoft.Xrm.Tooling.Connector.CrmServiceClient]$Conn
    )
    Write-Verbose "Updating RootComponentBehaviors..."
    $component = Get-CrmSolutionComponent -Conn $conn -SolutionName $solutionName
    
    $entities = $component | Where-Object -Property ComponentType -EQ 1
    $badRootComponents = $entities | Where-Object -Property rootcomponentbehavior -EQ 0 
    $updatedRootComponents = @()

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

    Write-Output $updatedRootComponents
}