Evotec Services sp. z o.o., ul. Drozdów 6, Mikołów, 43-190, Poland

Technical HUB

As we work for our customers, we often find ourselves in a position where we know it's not only our problem but most likely, a lot of people will hit this sooner or later. This Technical Hub provides our customers and us with solutions, scripts, and other information useful for Administrators and, to some degree, for non-technical people.

09 Oct15:27
09 Oct15:27
Oct 2022
Oct 2022
PSWriteHTML creating Email Body

Easy way to send emails using Microsoft Graph API (Office 365) with PowerShell

When you're using Office 365 and want to send an email, you have two choices SMTP or Microsoft Graph API, which is a “new” kid on the block. For some time, I've used Microsoft Graph exclusively to send emails in favor of SMTP as it's much easier to manage and generally works over HTTPS. If you type in google “Send email graph API PowerShell,” you will get lots of hits as bloggers, and Microsoft has already covered this topic. It's even more critical than ever because Basic Authentication is deprecated in Office 365. To help out with the transition, Microsoft even released its PowerShell module. With Send-MgUserMail proposed as a way to send emails via Graph API, you will notice it's far from being easy & user-friendly. Over two years ago, I released a PowerShell module called Mailozaurr (some people may not like my modules' naming – but that's how I roll!). In a blog post, Mailozaurr – New mail toolkit (SMTP, IMAP, POP3) with support for oAuth 2.0 and GraphApi for PowerShell, I've shown a basic functionality on how to send emails using SMTP OAuth 2.0 or Graph API, which aims to be drag & drop replacement over Send-MailMessage and is supposed to be as simple as possible to send an email with a low effort and high readability. You can also read on sending emails using Graph API by Tony Redmond in his blog post Moving on from Send-MailMessage: Sending Email from PowerShell using the Graph API.
21 Aug18:07
21 Aug18:07
Aug 2022
Aug 2022
Adaptive Card Tables

Adaptive Cards with Tables and Linebreaks in Microsoft Teams

PSTeams is a PowerShell module that helps simplify sending notifications to Microsoft Teams via Incoming webhooks. It's easy to use and doesn't require playing with JSON. Since version 2.0, it started to support Adaptive Cards; in version 2.1, I've added the ability to mention people. Today I'm introducing an easy way to send data as a table and a quick way to add a line break.
10 Aug20:25
10 Aug20:25
Virus Total Analyzer - PowerShell Module

Working with VirusTotal from PowerShell

Virus Total is an excellent service. It's a single place where hundreds of antivirus engines can verify if the file, URL, domain name, or IP Address is trusted or not. Of course, it's not a silver bullet, but it brings tremendous value, and I often verify files I download before executing. Since I release a lot of new or updated PowerShell modules on a weekly/monthly basis, I thought it would be great to send newly released versions straight to Virus Total so I can have them checked before anyone executes them. I also hope to prevent false positives from some antivirus vendors that may tag my modules as malware because they haven't seen the DLL or PowerShell module in this form before. I've seen it happen to DBATools, so why not try and push my modules before users even use them?
07 Aug13:57
07 Aug13:57
img_62efa43f4b34a

Reporting group membership for critical Active Directory groups

I work a lot with Active Directory-related tasks. One of the tasks is to know the group membership of critical Active Directory Groups such as Domain Admins, Enterprise Admins, Schema Admins, Event Log Readers, and a few others that are a bit less known. As I did it, I got bored of typing the group names repeatedly and decided that enough was enough and there must be an easier way for me to do that.
26 Jul19:23
26 Jul19:23
Jul 2022
Jul 2022
Duplicate DNS entries

Finding duplicate DNS records by IP Address using PowerShell

In my earlier blog post, I showed you a way to find duplicate DNS entries using PowerShell, but the focus was on finding duplicate entries based on hostname. But what if you would like to find duplicate entries based on IP Addresses? This was the question I was asked on Reddit, and I thought it was a legitimate request, so today's focus will be on transposing table output from earlier functions to present data differently. 
24 Jul18:48
24 Jul18:48
Get DNS Duplicate Entries

Finding duplicate DNS entries using PowerShell

Today's blog post is about Active Directory-integrated DNS and how to find duplicate entries. By duplicate, I mean those where one DNS name matches multiple IP addresses. While some duplicate DNS entries are expected, in other cases, it may lead to problems. For example, having a static IP assigned to a hostname that later on is also updated with dynamic entries.
12 Jun18:14
12 Jun18:14
Jun 2022
Jun 2022
OfficeIMO Word C sharp library

OfficeIMO – Free cross-platform Microsoft Word .NET library

I've created a cross-platform (Windows, Linux, macOS) Word library based on Open XML SDK that heavily simplifies creating and modifying Word documents. Open XML SDK, while excellent, requires you to do a lot of work to make even simple documents. For example, if you want to use Table styles, you need first to define those styles, put them in a specific place, and assign them to a table. The same goes for lists, images, hyperlinks, bookmarks, and many other Microsoft Word types. Creating sections, managing headers, and footers – all that is possible using Open XML SDK, but it's far from easy. At least for a noob like me. You have to know the order to put them into the document; you must know the places and track IDs to all the elements. And trust me – it's not fun.
04 Jun21:47
04 Jun21:47
IIS Logs Parser in PowerShell

Reading IIS logs with PowerShell

Today I was reading Twitter, as I am pretty addicted to technology news when Adam Bacon mentioned that he's surprised that no one has rebuilt IIS Parser as pure PowerShell. While this is not entirely true, and some modules can do some parsing, I decided to try my luck. While doing it from scratch in PowerShell is possible, I opted to use an external C# library that does all the heavy lifting and is optimized for speed.
28 Feb17:22
28 Feb17:22
Feb 2022
Feb 2022
Compare PowerShell

PowerShell – Comparing advanced objects

Two years ago, I wrote a blog post on how you can compare two or more objects visually in PowerShell that works on Windows, Linux, or macOS. I've been using that for a while, but it had a specific flaw. Comparing more advanced objects that you often see (for example, returned by Graph API, two config files) wasn't working correctly, often throwing errors. The reason for this was that having nested hashtables arrays require more advanced logic. Today I've updated my module to use the ConvertTo-FlatObject function, which allows the Compare-MultipleObjects function to compare suitably more advanced objects hopefully. Of course, it should not throw errors anymore.