Public/Get-DSCResourceModule.ps1

function Get-DSCResourceModule {
<#
.SYNOPSIS
    Short description
.DESCRIPTION
    Long description
.EXAMPLE
    Example of how to use this cmdlet
.EXAMPLE
    Another example of how to use this cmdlet
#>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true)]
        [string]$Path,
        [switch]$Recurse

    )
    
    begin {
        if (!($Recurse))
        {
            $data = Get-Content -Path $Path -Raw | ConvertFrom-Json
        }
        else
        {
            $data = Get-ChildItem -Path $Path -Recurse -File | Get-Content -Raw  | ConvertFrom-Json
        }
    }
    
    process {
        
        foreach ($dscResource in $data.DSCResourcesToExecute) 
        {
            
            if ($dscResource.dscResourceName -eq 'File')
            {
                $moduleName = 'PSDesiredStateConfiguration'
            } 
           else
           {
                $moduleName = (Get-DscResource -Name $dscResource.dscResourceName).ModuleName
           }
            
            [string[]]$modules += $moduleName
        }
    }
    
    end {
        $modules | Select-Object -Unique
    }
}

#Get-DSCResourceModule -Path 'C:\Users\jduffney\Documents\GitHub\Invoke-DSC\examples\AppProvisioning.json'