Personal sites (formerly known as My Sites) are provisioned on demand in Office 365. Only when the user first clicks e.g. their OneDrive link in the suite bar is their personal site actually provisioned. This was a prudent architectural decision on Microsoft’s part to not provision space until it is actually needed. Anybody who managed pre-provisioned personal sites on premises will know that this can be unnecessarily expensive, especially when you have a very large number of users.
With this approach it is sometimes useful to know how many users have already provisioned their personal site, so as to get a measure of adoption.
Individually by User Profile
We can navigate to the ‘Manage User Profiles’ link and find this out individually for each user. When the user has a personal site we can click the drop down option to ‘Manage Personal Site’ and we are taken to the site settings.
When the user does not have a personal site, a message is displayed saying they don’t have one.
O365 Reports
For gathering a total count, there is a report under:
Admin > Office 365 > Reports > OneDrive for Business sites deployed
Use Search to report on Personal Sites
We can also use Search to find all the personal sites e.g.
Path:https://chrishines-my.sharepoint.com AND contentclass:STS_Site
This will get all the personal sites under the My Site application (chrishines-my.sharepoint.com). The query will naturally return only one page of results at a time. However, we can use the search REST API to get creative and return large pages (maximum 500) and iterate through all pages to get a count. The REST API call would look like something like this:
http://chrishines.sharepoint.com/_api/search/query?querytext=’Path:https:%2f%2fchrishines-my.sharepoint.com+AND+contentclass:STS_Site’&trimduplicates=false&startrow=4500&rowlimit=500
This particular request will get all the personal sites from count 4,500 – 5,000. In my case this returned 239 results telling me that 4,739 personal sites had been created thus far.
You may be comfortable writing REST API calls to achieve this. Alternatively, I would highly recommend using the SharePoint 2013 Search tool to help out.
https://sp2013searchtool.codeplex.com
Remember to set trimduplicates=false as identification of duplicates can cause a lot of confusion with this type of query.