Table of Contents
Success of PowerShell Based on Community Values
The success of PowerShell is firmly rooted in strong community involvement and the willingness of people to share their knowledge about how to get things done. This has been the case for as long as I have worked with PowerShell (starting with Exchange 2007 in late 2006). I learned from many and gradually moved from total novice status to become mildly competent. Some would say dangerously incompetent, but that’s another discussion.
Part of being in a community is acknowledgement of the work you reuse from others. If you find some useful code in a script written by someone else, incorporate the code into your script and include an acknowledgement of where the code came from. It’s simply being polite.
Reporting Room Mailbox Statistics
Which brings me to a post from the Office 365 Reports company on May 23 about reporting room mailbox statistics (Figure 1). This is an area that I know well. I covered it in a Practical365.com article in December 2022 and revised my script to add extra reporting capabilities in February 2023 following reader feedback for the original article.

Seeing the post in the Facebook PowerShell group, I opened the link to read the article to discover that much of the code in the script was lifted from my script posted in GitHub. No attempt was made to hide the source of many lines of code, which was copied and dropped into the Office 365 Reports script. Even the most cursory of examinations reveals the extent of the copying.
It’s true that the Office 365 Reports version uses the Microsoft Graph PowerShell SDK where I use an Azure AD registered app as the source of authentication to access the data held in room mailbox calendars, but look beyond that to the output and you’ll see where the copying happened. Figure 2 shows a screen shot published in my February 2023 article. Look at the summary for individual room mailbox statistics. Doesn’t that look very similar to the output generated by the Office 365 Reports version?

Any PowerShell script might produce rudimentary output that looks similar to other scripts. But if you examine their script, you’ll find many matches with the original code. In short, Office 365 Reports were lazy and copied code without bothering to hide their traces.
Poor Behavior From a Commercial Company
I have a real problem with this behavior. First, no one from Office 365 Reports (or AdminDroid, their associated company) contacted me to ask if they could reuse my code. Instead, Office 365 Reports went ahead and copied many lines of code (including a bug that I subsequently fixed) from GitHub and published their script. They didn’t bother responding to the comment I made to their Facebook post either.
Second, they didn’t bother to acknowledge the original source of much of the code in their script. I did not grant Office 365 Reports the right to reuse my code for commercial purposes, which is what they have done by including the code in a script developed to attract interest in Office 365 Reports and AdminDroid.
Plagiarism is Never Justified
I don’t like slamming companies in public, but I hate when companies like AdminDroid seek to benefit from the work shared freely within the PowerShell community. My suspicion is that this is not the first time that Office 365 Reports and AdminDroid have “borrowed” code from the PowerShell community to advance their commercial interests. I also don’t like the way that they post articles under assumed names like Kathy Cooper. I don’t believe that such a person exists. It’s just a nom de plume used to disguise whoever writes the articles.
If the people behind AdminDroid and Office 365 Reports want to contact me, I’m happy to hear their side of the argument. But right now this looks like a simple case of plagiarism. If that’s the way AdminDroid operates, why would anyone use their products?
Hi Tony,
I’m right there with you! If someone makes an effort and shares it with the community and it is then used further, then they should have balls in their pants and ask the publisher.
But that shows that they benefit from the best of the best!!
Thanks for your daily great work!
Marc
In my opinion such behavior is the first step to ruin what you’ve rightly called ‘community values’.
I’m always surprised how difficult it is for some to predict the not-so-far-reaching consequences of such approach.
I apologize for your code being used in our blog without notice. It passed our review without our knowledge unless pointed out by you.
Here’s a little bit of background of what has happened.
Before jumping into details, I would like to provide a brief on our team: We have been preparing Microsoft 365 PowerShell scripts for years, considering real-time use cases which include advanced capabilities like built-in filtering, scheduling, automatically installing required modules, etc. Each script is full blown script which supports variety of use cases.
You can check our GitHub script repository: https://github.com/admindroid-community/powershell-scripts (65 scripts are available)
Now, coming to the current situation, as the Azure AD and MSOnline modules are being deprecated, our new interns have been working on converting our existing scripts to Microsoft Graph PowerShell. I’m including the below links as proof of the conversion process in the recent time for converting the scripts from 2018.
May 4, 2023: https://o365reports.com/2019/03/07/export-office-365-users-last-logon-time-csv/
Apr 21, 2023: https://o365reports.com/2020/11/12/export-office-365-guest-user-report-with-their-membership/
Apr 14,2023: https://o365reports.com/2020/02/17/export-office-365-users-last-password-change-date-to-csv/
Apr 08, 2023: https://o365reports.com/2021/04/15/export-office-365-groups-a-user-is-member-of-using-powershell
Mar 30, 2023: https://o365reports.com/2018/12/14/export-office-365-user-license-report-powershell/
Mar 23, 2023: https://o365reports.com/2021/03/02/export-office-365-admin-role-report-powershell
Mar 16, 2023: https://o365reports.com/2021/02/11/export-microsoft-365-group-report-to-csv-using-powershell/
Upon being assigning a fresh script task, the intern inadvertently took a reference from the internet unaware of the nature of the task being assigned, and proceeded with converting to Graph PowerShell, which you can clearly notice as none of your code is modified except connecting methodology alone. The same was overlooked in our review as well.
https://o365reports.com/2019/05/23/export-office-365-distribution-group-members-csv/ – When you check our blogs and their comments, you will get to know how we craft each script, how we enhance them based on our readers’ requirements, and how we actively respond to community questions for our script. It’s really disheartening to hear criticism after putting in a year’s worth of effort.
We assure all of our existing scripts are written from scratch by understanding various use cases of admin requirements. However, we take full responsibility for the review error. Again, I apologize for the incident and the pain it has caused you. We never want to hurt anyone and copy their works, so we request you to allow us a few days for us to redo the code and update our blog. We respect your contribution towards the Office 365 community, and your understanding in this matter.
Kathy,
I don’t quite know how to respond. You put all the blame on the person who plagiarized my code and the failure of your review process. Yet no blame is assigned to the obvious problem that exists within the organization where interns are assigned tasks to write PowerShell scripts without sufficient guidance or oversight. In fact, the knowledge that you use interns to write code is pretty interesting because it means that the code generated lacks any of the wisdom or insight gained through hard experience of using Microsoft 365. Writing code based on theory rather than practice is fine and value exists in that approach, but practice makes perfect (or at least as close to perfect as anyone can get).
It seems to me that Office 365 Reports/AdminDroid ignored the original protest I posted in response to the Facebook post about your script. Perhaps you wanted me to go away and accept that plagiarism can be tolerated and that companies like yours can make a commercial gain from the efforts of others. It strongly seems that you only swung into action to response after experiencing an “oh crap” moment when you realized that I had published an article outlining the facts.
I hope that your company learns from the experience and responds quickly to any issue highlighted to you in whatever social media channels you use to publish material. The pain of making a mistake is much reduced when you address it fast. I would have been happy with an acknowledgement of the mistake, but once you ignored me, the likelihood of action resulting in a loss of reputation increased dramatically, as I think you discovered.
I personally don’t care what you do to adjust your code or your blog post. I will never recommend your company to any potential customer in the future.
Tony
I’ve addressed the obvious issue we’ve been discussing. However, I see that I did not explicitly state it in my previous response, and some clarity was lacking there.
We always ensure having a strong tech mentor when an intern prepares a script; Knowledge from mentor, script by intern and reviewed by coding expert. Our reviewer certainly checked the script’s effectiveness but overlooked plagiarism; yeah, I admit it, even if it is unintentional. We are to blame for failing to notice this. We accept it as a mistake on our part and we will work to prevent it from happening again. I also understand that our response to the social media comment you made was delayed. We really missed noticing the comment you made; it came to my notice only after I had been tagged. I deeply regret for inadvertently hurting you. Now I have written the script and updated it in the blog.
Please don’t overlook the quality as the recent scripts were updated by an intern. If you have any point in our script quality, then we are happy to participate in healthy discussion which would benefit the entire community.
I want to clearly convey that we are strictly against plagiarism. We are writing scripts for the Office 365 Administrators, and we are getting good responses from them, and they are motivating us to write more blogs. All our code is well maintained to tackle the many changes that have been happening in the Microsoft 365 ecosystem. We do this because we love to be a part of the Microsoft 365 community and want to extend our knowledge and resources to all Administrators and be a part of their daily life.
I hope we can allow this conversation to rest. I appreciate the lessons I’ve learned from our interactions.
I am going to continue to purchase your book and subscribe to your newsletter. I will also continue to recommend your invaluable resources to my clients,
I will be avoiding the AdminDroid and Office365 reports content and will advise my clients to do the same.
Funny that there’s no “Kathy Cooper” associated with AdminDroid on LinkedIn.
It is always the same, many people are copying content without adding links, asking for consent or adding credits and if someone reports that, then they may say sorry or tell us that it is not the companies fault or not “for business” etc. I see that many times with my content, too and i believe that it will even get worse with KI-generated answers in search engines without pointing to sources.
I know, i have many “unique” typos in my content and code and you might find duplicates.
Even some pages are using IMG-Links to include my pictures in their web (check the referer in the Logs)
But there is no solution for that. People are always copying (all nations, not a chinese only issue) and some earn money with them. I have seen “Customers documentations” from competitors with my images and text (and typo!) as a paid service at the customer.
The only thing you can do: make it public, tell it your customer and community, so they can make their own decisions.
“Kathy” ‘s English comes across as AI generated, or at least not English as their first language.
Hi Tony,
Great article and I can 100% agree with you.
It’s a shame that AdminDroid did this. It’s not the first time they do this. They just have to STOP!
There is no “Kathy Cooper” and it’s just an Indian company that like to steal/copy information.
They run:
– Admindroid.com
– O365reports.com
– M365scripts.com
ATTENTION: Don’t use the above websites. Keep in mind that you do NOT support them, click on the posts, or engage with them.
I never ever used their products and never will share their posts or scripts.
Now with you confirming their bad behavior, hopefully all people around the world understand this too and stop using or recommending their product (if they ever did).
Keep being you, Tony.
Thank you for this post, Tony. I downloaded a trial of AdminDroid yesterday and while I like the features, I am not a fan of plagiarism as well. That being said, what would you recommend to admins like me who is not proficient with powershell scripting?
There are tons of examples published here, on Practical365.com, and on other reputable sites. PowerShell is a matter of practice. Keep on using it and keep on exploring new ideas and your skills will develop… And buy a copy of the Office 365 for IT Pros eBook too! 😉
Tony, since you post contents or PowerShell scripts to be used by the community (clients, architects, you, me and vendors) then why bother if they copied and used your code in their commercial products? Do you write specifically a note on your post that the code shouldn’t be used by the “Vendors”? just my say.
Good question. My major issue was that the Office 365 Reports team (part of AdminDroid) reused the code without any acknowledgement. Had they rewritten the code using the techniques explored in my code (hopefully to make it better), then I would have had no objection. But copying and pasting without saying anything goes too far when a company seeks to gain a commercial advantage from the action. THe experience hasn’t stopped me releasing new scripts for people to try out…