I've been writing SharePoint inventory scripts for a minute, so I'm placing them here in github for your pleasure. There are not a lot of PnP inventory scripts out there, so these scripts will be exclusively built using PNP.
For more detail about this script, go here: http://erikboderek.net/2018/02/26/sharepointpnpinventory/
This script gets every field for every item everywhere. It's exhaustive. It does a pretty good job of getting Managed Metadata values too, but this can probably be tidied up a bit.
This script gets the item count and size of each list in every subsite. It also has timestamps and subsite level. When doing site inventories, I'd recommend using this script as it's less information to parse and is nicely summarized.
You'll need to install PnP Powershell. Go here first: https://blog.kloud.com.au/2018/02/01/quick-start-guide-for-pnp-powershell/
A major limitation in all the scripts is as follows: Get-PNPSubwebs -Recurse fails when a web is a provider hosted app. For example, if you have Nintex for Office 365, PNP views it as a subsite, even though it appears in your Lists/Apps. I logged this as an issue - pnp/PnP-PowerShell#1490. This means the script cannot traverse all of the subsites effectively. There are clever ways around this, which I capture in my blog above. Until this is fixed, these scripts will do their best to inventory everything, but there are some caveats. I'll update as fixes or novel approaches become available.
In get-sitecollectioninventory the sitecollection title is null, but subsites are not.