{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Blog",
  "home_page_url": "https://evotec.pl/blog",
  "feed_url": "https://evotec.pl/blog/index.feed.json",
  "description": "Technical articles, tutorials, and insights on PowerShell, .NET, Active Directory, and enterprise IT automation.",
  "items": [
    {
      "id": "https://evotec.pl/blog/supercharging-your-network-diagnostics-with-globalping-for-net",
      "url": "https://evotec.pl/blog/supercharging-your-network-diagnostics-with-globalping-for-net",
      "title": "Supercharging Your Network Diagnostics with Globalping for NET",
      "summary": "Ever wondered how to run network diagnostics like Ping, Traceroute, or DNS queries from probes scattered across the globe? Enter Globalping.NET, a powerful library that makes it effortless to interact with the Globalping API using C#. Whether you\u2019re debugging latency issues or exploring packet routes, this library has you covered.",
      "date_published": "2025-06-15T19:52:52.0000000Z",
      "tags": [
        ".NET Products",
        "csharp",
        "globalping",
        "library"
      ]
    },
    {
      "id": "https://evotec.pl/blog/supercharging-your-network-diagnostics-with-globalping-for-net",
      "url": "https://evotec.pl/blog/supercharging-your-network-diagnostics-with-globalping-for-net",
      "title": "Supercharging Your Network Diagnostics with Globalping for NET",
      "summary": "Ever wondered how to run network diagnostics like Ping, Traceroute, or DNS queries from probes scattered across the globe? Enter Globalping.NET, a powerful library that makes it effortless to interact with the Globalping API using C#. Whether you\u2019re debugging latency issues or exploring packet routes, this library has you covered.",
      "date_published": "2025-06-15T19:52:52.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/automating-network-diagnostics-with-globalping-powershell-module",
      "url": "https://evotec.pl/blog/automating-network-diagnostics-with-globalping-powershell-module",
      "title": "Automating Network Diagnostics with Globalping PowerShell Module",
      "summary": "Are you tired of manually running network diagnostics like Ping, Traceroute, or DNS queries? The Globalping PowerShell Module is here to save the day! With its easy-to-use cmdlets, you can automate measurements from probes distributed across the globe.",
      "date_published": "2025-06-15T19:52:50.0000000Z",
      "tags": [
        "PowerShell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/automating-network-diagnostics-with-globalping-powershell-module",
      "url": "https://evotec.pl/blog/automating-network-diagnostics-with-globalping-powershell-module",
      "title": "Automating Network Diagnostics with Globalping PowerShell Module",
      "summary": "Are you tired of manually running network diagnostics like Ping, Traceroute, or DNS queries? The Globalping PowerShell Module is here to save the day! With its easy-to-use cmdlets, you can automate measurements from probes distributed across the globe.",
      "date_published": "2025-06-15T19:52:50.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/enhanced-dashboards-with-pswritehtml-introducing-infocards-and-density-options",
      "url": "https://evotec.pl/blog/enhanced-dashboards-with-pswritehtml-introducing-infocards-and-density-options",
      "title": "Enhanced Dashboards with PSWriteHTML \u2013 Introducing InfoCards and Density Options",
      "summary": "Discover new features in the PSWriteHTML PowerShell module \u2013 including New-HTMLInfoCard, improved layout controls with the -Density parameter, and customizable shadows for clean, modern dashboards and reports.",
      "date_published": "2025-06-04T13:54:28.0000000Z",
      "tags": [
        "css",
        "html",
        "js",
        "PowerShell",
        "pswritehtml",
        "reporting"
      ]
    },
    {
      "id": "https://evotec.pl/blog/enhanced-dashboards-with-pswritehtml-introducing-infocards-and-density-options",
      "url": "https://evotec.pl/blog/enhanced-dashboards-with-pswritehtml-introducing-infocards-and-density-options",
      "title": "Enhanced Dashboards with PSWriteHTML \u2013 Introducing InfoCards and Density Options",
      "summary": "Discover new features in the PSWriteHTML PowerShell module \u2013 including New-HTMLInfoCard, improved layout controls with the -Density parameter, and customizable shadows for clean, modern dashboards and reports.",
      "date_published": "2025-06-04T13:54:28.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-sidhistory-cleanup-with-cleanupmonster",
      "url": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-sidhistory-cleanup-with-cleanupmonster",
      "title": "Mastering Active Directory Hygiene: Automating SIDHistory Cleanup with CleanupMonster",
      "summary": "Security Identifier (SID) History is a useful mechanism in Active Directory (AD) migrations. It allows users and groups in a new domain to retain access to resources that still rely on permissions from the old domain. However, once migrations are completed, these historical SIDs can become clutter, posing both security and administrative challenges. While it\u2019s best to remove unnecessary SID History as soon as you\u2019re done migrating, many environments skip this step. Over time, decommissioned or broken trusts make cleanup more difficult, and domain objects can accrue so many old entries that you lose track of what is still required.",
      "date_published": "2025-03-16T18:47:45.0000000Z",
      "tags": [
        "Active Directory",
        "activedirectory",
        "cleanup",
        "powershell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-sidhistory-cleanup-with-cleanupmonster",
      "url": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-sidhistory-cleanup-with-cleanupmonster",
      "title": "Mastering Active Directory Hygiene: Automating SIDHistory Cleanup with CleanupMonster",
      "summary": "Security Identifier (SID) History is a useful mechanism in Active Directory (AD) migrations. It allows users and groups in a new domain to retain access to resources that still rely on permissions from the old domain. However, once migrations are completed, these historical SIDs can become clutter, posing both security and administrative challenges. While it\u2019s best to remove unnecessary SID History as soon as you\u2019re done migrating, many environments skip this step. Over time, decommissioned or broken trusts make cleanup more difficult, and domain objects can accrue so many old entries that you lose track of what is still required.",
      "date_published": "2025-03-16T18:47:45.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/upgrade-azure-active-directory-connect-fails-with-unexpected-error",
      "url": "https://evotec.pl/blog/upgrade-azure-active-directory-connect-fails-with-unexpected-error",
      "title": "Upgrade Azure Active Directory Connect fails with unexpected error",
      "summary": "Today, I made the decision to upgrade my test environment and update the version of Azure AD Connect to the latest one. The process is usually simple: download a new MSI, run it, click next a few times, enter the credentials for your Global Admin, and you\u2019re finished. However, this time, I encountered an error.",
      "date_published": "2024-10-02T12:17:34.0000000Z",
      "tags": [
        "azure ad",
        "azure adconnect",
        "error",
        "errors",
        "Office 365",
        "office365"
      ]
    },
    {
      "id": "https://evotec.pl/blog/upgrade-azure-active-directory-connect-fails-with-unexpected-error",
      "url": "https://evotec.pl/blog/upgrade-azure-active-directory-connect-fails-with-unexpected-error",
      "title": "Upgrade Azure Active Directory Connect fails with unexpected error",
      "summary": "Today, I made the decision to upgrade my test environment and update the version of Azure AD Connect to the latest one. The process is usually simple: download a new MSI, run it, click next a few times, enter the credentials for your Global Admin, and you\u2019re finished. However, this time, I encountered an error.",
      "date_published": "2024-10-02T12:17:34.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-stale-computer-cleanup-with-cleanupmonster",
      "url": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-stale-computer-cleanup-with-cleanupmonster",
      "title": "Mastering Active Directory Hygiene: Automating Stale Computer Cleanup with CleanupMonster",
      "summary": "Have you ever looked at your Active Directory and wondered, \u201CWhy do I still have computers listed that haven\u2019t been turned on since World Cup 2016?\u201D Yeah, we\u2019ve all been there. Keeping AD clean and up-to-date is like trying to organize your garage\u2014it\u2019s easy to put off until it becomes a total mess.",
      "date_published": "2024-08-25T13:14:39.0000000Z",
      "tags": [
        "active directory",
        "ad",
        "cleanup",
        "intune",
        "microsoft entra",
        "powershell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-stale-computer-cleanup-with-cleanupmonster",
      "url": "https://evotec.pl/blog/mastering-active-directory-hygiene-automating-stale-computer-cleanup-with-cleanupmonster",
      "title": "Mastering Active Directory Hygiene: Automating Stale Computer Cleanup with CleanupMonster",
      "summary": "Have you ever looked at your Active Directory and wondered, \u201CWhy do I still have computers listed that haven\u2019t been turned on since World Cup 2016?\u201D Yeah, we\u2019ve all been there. Keeping AD clean and up-to-date is like trying to organize your garage\u2014it\u2019s easy to put off until it becomes a total mess.",
      "date_published": "2024-08-25T13:14:39.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/active-directory-replication-summary-to-your-email",
      "url": "https://evotec.pl/blog/active-directory-replication-summary-to-your-email",
      "title": "Active Directory Replication Summary to your Email or Microsoft Teams",
      "summary": "Active Directory replication is a critical process that ensures the consistent and up-to-date state of directory information across all domain controllers in a domain. Monitoring this process is important as it helps identify any issues that may arise and resolve them quickly. One way to monitor Active Directory replication is by using the Repadmin command-line tool. Repadmin provides a wealth of information about the replication status and health of a domain. However, manually checking the Repadmin output can be time-consuming and tedious, and running it manually every 30 minutes just to check if everything is great doesn\u2019t seem like a great idea. While PowerShell has its own commands around replication I\u2019ve not found something as fast and reliable as repadmin /replsummary.",
      "date_published": "2024-04-17T19:25:32.0000000Z",
      "tags": [
        "active directory",
        "powershell",
        "replication"
      ]
    },
    {
      "id": "https://evotec.pl/blog/active-directory-replication-summary-to-your-email",
      "url": "https://evotec.pl/blog/active-directory-replication-summary-to-your-email",
      "title": "Active Directory Replication Summary to your Email or Microsoft Teams",
      "summary": "Active Directory replication is a critical process that ensures the consistent and up-to-date state of directory information across all domain controllers in a domain. Monitoring this process is important as it helps identify any issues that may arise and resolve them quickly. One way to monitor Active Directory replication is by using the Repadmin command-line tool. Repadmin provides a wealth of information about the replication status and health of a domain. However, manually checking the Repadmin output can be time-consuming and tedious, and running it manually every 30 minutes just to check if everything is great doesn\u2019t seem like a great idea. While PowerShell has its own commands around replication I\u2019ve not found something as fast and reliable as repadmin /replsummary.",
      "date_published": "2024-04-17T19:25:32.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/syncing-global-address-list-gal-to-personal-contacts-and-between-office-365-tenants-with-powershell",
      "url": "https://evotec.pl/blog/syncing-global-address-list-gal-to-personal-contacts-and-between-office-365-tenants-with-powershell",
      "title": "Syncing Global Address List (GAL) to personal contacts and between Office 365 tenants with PowerShell",
      "summary": "Hey there! Today, I wanted to introduce you to one of the small but excellent module I\u2019ve created called the O365Synchronizer. This module focuses on synchronizing contacts and users. If you\u2019ve ever been tasked with synchronizing Global Address Lists (GAL) across different Office 365 tenants or just wanted to sync GAL with user mailboxes so they can access contacts directly on their phones, this tool is for you.",
      "date_published": "2023-12-03T16:32:13.0000000Z",
      "tags": [
        "api",
        "exchange",
        "microsoft graph",
        "office 365",
        "powershell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/syncing-global-address-list-gal-to-personal-contacts-and-between-office-365-tenants-with-powershell",
      "url": "https://evotec.pl/blog/syncing-global-address-list-gal-to-personal-contacts-and-between-office-365-tenants-with-powershell",
      "title": "Syncing Global Address List (GAL) to personal contacts and between Office 365 tenants with PowerShell",
      "summary": "Hey there! Today, I wanted to introduce you to one of the small but excellent module I\u2019ve created called the O365Synchronizer. This module focuses on synchronizing contacts and users. If you\u2019ve ever been tasked with synchronizing Global Address Lists (GAL) across different Office 365 tenants or just wanted to sync GAL with user mailboxes so they can access contacts directly on their phones, this tool is for you.",
      "date_published": "2023-12-03T16:32:13.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/active-directory-health-check-using-microsoft-entra-connect-health-service",
      "url": "https://evotec.pl/blog/active-directory-health-check-using-microsoft-entra-connect-health-service",
      "title": "Active Directory Health Check using Microsoft Entra Connect Health Service",
      "summary": "Active Directory (AD) is crucial in managing identities and resources within an organization. Ensuring its health is pivotal for the seamless operation of various services. Today, I decided to look at Microsoft Entra Connect Health (Azure AD Connect Health) service, which allows monitoring Azure AD Connect, ADFS, and Active Directory. This means that under a single umbrella, you can have an overview of three services health. But is it worth it?",
      "date_published": "2023-10-08T14:36:57.0000000Z",
      "tags": [
        "Active Directory",
        "Azure",
        "azure ad",
        "health checks",
        "microsoft entra",
        "powershell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/active-directory-health-check-using-microsoft-entra-connect-health-service",
      "url": "https://evotec.pl/blog/active-directory-health-check-using-microsoft-entra-connect-health-service",
      "title": "Active Directory Health Check using Microsoft Entra Connect Health Service",
      "summary": "Active Directory (AD) is crucial in managing identities and resources within an organization. Ensuring its health is pivotal for the seamless operation of various services. Today, I decided to look at Microsoft Entra Connect Health (Azure AD Connect Health) service, which allows monitoring Azure AD Connect, ADFS, and Active Directory. This means that under a single umbrella, you can have an overview of three services health. But is it worth it?",
      "date_published": "2023-10-08T14:36:57.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/unlocking-seamless-html-report-creation-harness-the-power-of-markdown-with-pswritehtml-powershell-module",
      "url": "https://evotec.pl/blog/unlocking-seamless-html-report-creation-harness-the-power-of-markdown-with-pswritehtml-powershell-module",
      "title": "Seamless HTML Report Creation: Harness the Power of Markdown with PSWriteHTML PowerShell Module",
      "summary": "In today\u2019s digital age, the ability to create compelling and informative HTML reports and documents is a crucial skill for professionals in various fields. Whether you\u2019re a data analyst, a system administrator, a developer, or simply someone who wants to present information in an organized and visually appealing manner, having the right tools at your disposal can make all the difference. That\u2019s where the PSWriteHTML PowerShell module steps in, offering an array of possibilities to suit your reporting needs.",
      "date_published": "2023-09-03T16:59:27.0000000Z",
      "tags": [
        "css",
        "html",
        "markdown",
        "powershell",
        "powershell module",
        "pswritehtml"
      ]
    },
    {
      "id": "https://evotec.pl/blog/unlocking-seamless-html-report-creation-harness-the-power-of-markdown-with-pswritehtml-powershell-module",
      "url": "https://evotec.pl/blog/unlocking-seamless-html-report-creation-harness-the-power-of-markdown-with-pswritehtml-powershell-module",
      "title": "Seamless HTML Report Creation: Harness the Power of Markdown with PSWriteHTML PowerShell Module",
      "summary": "In today\u2019s digital age, the ability to create compelling and informative HTML reports and documents is a crucial skill for professionals in various fields. Whether you\u2019re a data analyst, a system administrator, a developer, or simply someone who wants to present information in an organized and visually appealing manner, having the right tools at your disposal can make all the difference. That\u2019s where the PSWriteHTML PowerShell module steps in, offering an array of possibilities to suit your reporting needs.",
      "date_published": "2023-09-03T16:59:27.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/how-to-efficiently-remove-comments-from-your-powershell-script",
      "url": "https://evotec.pl/blog/how-to-efficiently-remove-comments-from-your-powershell-script",
      "title": "How to Efficiently Remove Comments from Your PowerShell Script",
      "summary": "As part of my daily development, I create lots of code that I subsequently comment on and leave to ensure I understand what I tried, what worked, and what didn\u2019t. This is my usual method of solving a problem. Sure, I could commit it to git and then look it up, and I do that, but that doesn\u2019t change my behavior where I happen to have lots of \u201Cjunk\u201D inside of my functions that stay commented out. While this works for me, and I\u2019ve accepted this as part of my process, I don\u2019t believe this should be part of the production code on PowerShellGallery or when the code is deployed.",
      "date_published": "2023-08-20T15:43:09.0000000Z",
      "tags": [
        "cleanup",
        "comment",
        "powershell",
        "remove",
        "script"
      ]
    },
    {
      "id": "https://evotec.pl/blog/how-to-efficiently-remove-comments-from-your-powershell-script",
      "url": "https://evotec.pl/blog/how-to-efficiently-remove-comments-from-your-powershell-script",
      "title": "How to Efficiently Remove Comments from Your PowerShell Script",
      "summary": "As part of my daily development, I create lots of code that I subsequently comment on and leave to ensure I understand what I tried, what worked, and what didn\u2019t. This is my usual method of solving a problem. Sure, I could commit it to git and then look it up, and I do that, but that doesn\u2019t change my behavior where I happen to have lots of \u201Cjunk\u201D inside of my functions that stay commented out. While this works for me, and I\u2019ve accepted this as part of my process, I don\u2019t believe this should be part of the production code on PowerShellGallery or when the code is deployed.",
      "date_published": "2023-08-20T15:43:09.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/unlocking-powershell-magic-different-approach-to-creating-empty-pscustomobjects",
      "url": "https://evotec.pl/blog/unlocking-powershell-magic-different-approach-to-creating-empty-pscustomobjects",
      "title": "Unlocking PowerShell Magic: Different Approach to Creating \u2018Empty\u2019 PSCustomObjects",
      "summary": "Today I saw an article from Christian Ritter, \u201CPowerShell: Creating an \u201Cempty\u201D PSCustomObject\u201D on X that got me curious. Do people create empty objects like Christian proposes? I want to offer an alternative to Christian\u2019s article, which uses OrderedDictionary and converts to PSCustomObject.",
      "date_published": "2023-08-10T09:27:32.0000000Z",
      "tags": [
        "conversion",
        "hashtable",
        "ordereddictionary",
        "powershell",
        "pscustomobject"
      ]
    },
    {
      "id": "https://evotec.pl/blog/unlocking-powershell-magic-different-approach-to-creating-empty-pscustomobjects",
      "url": "https://evotec.pl/blog/unlocking-powershell-magic-different-approach-to-creating-empty-pscustomobjects",
      "title": "Unlocking PowerShell Magic: Different Approach to Creating \u2018Empty\u2019 PSCustomObjects",
      "summary": "Today I saw an article from Christian Ritter, \u201CPowerShell: Creating an \u201Cempty\u201D PSCustomObject\u201D on X that got me curious. Do people create empty objects like Christian proposes? I want to offer an alternative to Christian\u2019s article, which uses OrderedDictionary and converts to PSCustomObject.",
      "date_published": "2023-08-10T09:27:32.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/report-active-directory-accounts-that-are-synchronized-with-azure-ad",
      "url": "https://evotec.pl/blog/report-active-directory-accounts-that-are-synchronized-with-azure-ad",
      "title": "Report Active Directory Accounts that are Synchronized with Azure AD",
      "summary": "I was scrolling X (aka Twitter) today and saw this blog post, \u201CPowerShell: Report On-Premises Active Directory Accounts that are Synchronized with Azure AD Connect\u201D by Kevin Trent. I like reading blog posts as I tend to learn some new things and see how people tend to solve their problems.",
      "date_published": "2023-08-07T13:21:18.0000000Z",
      "tags": [
        "active directory",
        "ad",
        "azure ad",
        "microsoft graph",
        "powershell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/report-active-directory-accounts-that-are-synchronized-with-azure-ad",
      "url": "https://evotec.pl/blog/report-active-directory-accounts-that-are-synchronized-with-azure-ad",
      "title": "Report Active Directory Accounts that are Synchronized with Azure AD",
      "summary": "I was scrolling X (aka Twitter) today and saw this blog post, \u201CPowerShell: Report On-Premises Active Directory Accounts that are Synchronized with Azure AD Connect\u201D by Kevin Trent. I like reading blog posts as I tend to learn some new things and see how people tend to solve their problems.",
      "date_published": "2023-08-07T13:21:18.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/function-cannot-be-created-because-function-capacity-4096-has-been-exceeded-for-this-scope",
      "url": "https://evotec.pl/blog/function-cannot-be-created-because-function-capacity-4096-has-been-exceeded-for-this-scope",
      "title": "Function cannot be created because function capacity 4096 has been exceeded for this scope",
      "summary": "I had a long day today when my long-running script (10 hours) gave me weird errors with Microsoft Graph for Teams. Finally, I solved my mistakes and reran the hand to see if the report would be complete this time. Surprisingly, it gave me an error I\u2019d never seen before. \u201CFunction cannot be created because function capacity 4096 has been exceeded for this scope\u201D. The error is at least weird because it\u2019s shown on a production server where I\u2019ve just a handful of PowerShell modules installed, and I\u2019ve never seen it on my development machine where I\u2019ve over 200 modules.",
      "date_published": "2023-08-01T06:22:34.0000000Z",
      "tags": [
        "aliases",
        "errors",
        "functions",
        "limits",
        "powershell",
        "windows powershell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/function-cannot-be-created-because-function-capacity-4096-has-been-exceeded-for-this-scope",
      "url": "https://evotec.pl/blog/function-cannot-be-created-because-function-capacity-4096-has-been-exceeded-for-this-scope",
      "title": "Function cannot be created because function capacity 4096 has been exceeded for this scope",
      "summary": "I had a long day today when my long-running script (10 hours) gave me weird errors with Microsoft Graph for Teams. Finally, I solved my mistakes and reran the hand to see if the report would be complete this time. Surprisingly, it gave me an error I\u2019d never seen before. \u201CFunction cannot be created because function capacity 4096 has been exceeded for this scope\u201D. The error is at least weird because it\u2019s shown on a production server where I\u2019ve just a handful of PowerShell modules installed, and I\u2019ve never seen it on my development machine where I\u2019ve over 200 modules.",
      "date_published": "2023-08-01T06:22:34.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/connect-mggraph-keyset-does-not-exist",
      "url": "https://evotec.pl/blog/connect-mggraph-keyset-does-not-exist",
      "title": "Connect-MgGraph: Keyset does not exist",
      "summary": "I had this little issue today when I tried to schedule the Microsoft Graph script to run as a service account on a certificate. To my surprise, even tho I had all permissions required, I was getting this error message: Connect-MgGraph: Keyset does not exist. Something that didn\u2019t show up for my user.",
      "date_published": "2023-07-20T07:07:41.0000000Z",
      "tags": [
        "connet-mggraph",
        "graph",
        "graph-sdk",
        "microsoft graph",
        "powershell"
      ]
    },
    {
      "id": "https://evotec.pl/blog/connect-mggraph-keyset-does-not-exist",
      "url": "https://evotec.pl/blog/connect-mggraph-keyset-does-not-exist",
      "title": "Connect-MgGraph: Keyset does not exist",
      "summary": "I had this little issue today when I tried to schedule the Microsoft Graph script to run as a service account on a certificate. To my surprise, even tho I had all permissions required, I was getting this error message: Connect-MgGraph: Keyset does not exist. Something that didn\u2019t show up for my user.",
      "date_published": "2023-07-20T07:07:41.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/strengthening-password-security-in-active-directory-a-powershell-powered-approach",
      "url": "https://evotec.pl/blog/strengthening-password-security-in-active-directory-a-powershell-powered-approach",
      "title": "Strengthening Password Security in Active Directory: A PowerShell-Powered Approach",
      "summary": "PasswordSolution uses the DSInternals PowerShell module to gather Active Directory hashes and then combines that data into a prettified report. If you have ever used DSInternals, you know that while very powerful, it comes with raw data that is hard to process and requires some skills to get it into a state that can be shown to management or security.",
      "date_published": "2023-05-28T14:40:25.0000000Z",
      "tags": [
        "active directory",
        "ad",
        "dsinternals",
        "html",
        "password quality",
        "passwordsolution",
        "powershell",
        "scan",
        "security",
        "Windows"
      ]
    },
    {
      "id": "https://evotec.pl/blog/strengthening-password-security-in-active-directory-a-powershell-powered-approach",
      "url": "https://evotec.pl/blog/strengthening-password-security-in-active-directory-a-powershell-powered-approach",
      "title": "Strengthening Password Security in Active Directory: A PowerShell-Powered Approach",
      "summary": "PasswordSolution uses the DSInternals PowerShell module to gather Active Directory hashes and then combines that data into a prettified report. If you have ever used DSInternals, you know that while very powerful, it comes with raw data that is hard to process and requires some skills to get it into a state that can be shown to management or security.",
      "date_published": "2023-05-28T14:40:25.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/simplify-notifications-about-ubiquiti-unifi-stock",
      "url": "https://evotec.pl/blog/simplify-notifications-about-ubiquiti-unifi-stock",
      "title": "Track Ubiquiti Unifi Stock, and get notified of changes",
      "summary": "I am a pretty big fan of Ubiquiti and their Unifi products line. Whether it\u2019s network equipment or their camera systems, Unifi Protect, I have it all, and I\u2019m pretty happy with how it works. However, over the last two years, some of their stocks in the store were very hard to find. For example, I\u2019ve searched for Unifi Protect G4 Doorbell Pro for over six months. I\u2019ve tried local shops all around Europe, even in the Ubiquiti Europe store, to never found any of them.",
      "date_published": "2023-04-16T15:04:57.0000000Z",
      "tags": [
        "notifications",
        "powershell",
        "stock",
        "tracker",
        "ubiquiti",
        "unifi",
        "windows"
      ]
    },
    {
      "id": "https://evotec.pl/blog/simplify-notifications-about-ubiquiti-unifi-stock",
      "url": "https://evotec.pl/blog/simplify-notifications-about-ubiquiti-unifi-stock",
      "title": "Track Ubiquiti Unifi Stock, and get notified of changes",
      "summary": "I am a pretty big fan of Ubiquiti and their Unifi products line. Whether it\u2019s network equipment or their camera systems, Unifi Protect, I have it all, and I\u2019m pretty happy with how it works. However, over the last two years, some of their stocks in the store were very hard to find. For example, I\u2019ve searched for Unifi Protect G4 Doorbell Pro for over six months. I\u2019ve tried local shops all around Europe, even in the Ubiquiti Europe store, to never found any of them.",
      "date_published": "2023-04-16T15:04:57.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/microsoft-fundamental-free-training-starting-february-6th-2023",
      "url": "https://evotec.pl/blog/microsoft-fundamental-free-training-starting-february-6th-2023",
      "title": "Free Microsoft Azure/Office365 Fundamentals Training starting February 6th 2023",
      "summary": "Being a Microsoft MVP has quite a few benefits. You get to be part of unique offers that help you enhance your knowledge even further. Microsoft Learning team decided to provide free training on Microsoft Fundamentals for MVPs and the Microsoft community, so I\u2019m sharing this with you! Starting next week, Microsoft will run each activity from 9 AM to 5 PM Eastern Standard Time (EST) or 15:00 to 23:00 in Europe (CET).",
      "date_published": "2023-02-04T10:03:56.0000000Z",
      "tags": [
        "azure",
        "free",
        "o365",
        "office 365",
        "training"
      ]
    },
    {
      "id": "https://evotec.pl/blog/microsoft-fundamental-free-training-starting-february-6th-2023",
      "url": "https://evotec.pl/blog/microsoft-fundamental-free-training-starting-february-6th-2023",
      "title": "Free Microsoft Azure/Office365 Fundamentals Training starting February 6th 2023",
      "summary": "Being a Microsoft MVP has quite a few benefits. You get to be part of unique offers that help you enhance your knowledge even further. Microsoft Learning team decided to provide free training on Microsoft Fundamentals for MVPs and the Microsoft community, so I\u2019m sharing this with you! Starting next week, Microsoft will run each activity from 9 AM to 5 PM Eastern Standard Time (EST) or 15:00 to 23:00 in Europe (CET).",
      "date_published": "2023-02-04T10:03:56.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/upload-and-download-files-from-azure-blob-storage-using-connection-string",
      "url": "https://evotec.pl/blog/upload-and-download-files-from-azure-blob-storage-using-connection-string",
      "title": "Upload and Download files from Azure Blob Storage using Connection String",
      "summary": "They say there is a first time for everything. For me, it\u2019s how to download and upload files to Azure Blog Storage using Connection String. Recently I was given Connection String, Container name and had to download some files from Azur Blog Storage. After some research and trying Connect-AzAccount, I found that the proper way to go is thru New-AzStorageContext.",
      "date_published": "2023-01-18T19:13:24.0000000Z",
      "tags": [
        "az.storage",
        "azure ad",
        "azure blob storage",
        "download",
        "powershell",
        "upload"
      ]
    },
    {
      "id": "https://evotec.pl/blog/upload-and-download-files-from-azure-blob-storage-using-connection-string",
      "url": "https://evotec.pl/blog/upload-and-download-files-from-azure-blob-storage-using-connection-string",
      "title": "Upload and Download files from Azure Blob Storage using Connection String",
      "summary": "They say there is a first time for everything. For me, it\u2019s how to download and upload files to Azure Blog Storage using Connection String. Recently I was given Connection String, Container name and had to download some files from Azur Blog Storage. After some research and trying Connect-AzAccount, I found that the proper way to go is thru New-AzStorageContext.",
      "date_published": "2023-01-18T19:13:24.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/powerbginfo-powershell-alternative-to-sysinternals-bginfo",
      "url": "https://evotec.pl/blog/powerbginfo-powershell-alternative-to-sysinternals-bginfo",
      "title": "PowerBGInfo \u2013 PowerShell alternative to Sysinternals BGInfo",
      "summary": "When I created ImagePlayground, I thought about how to show its usefulness to the general community. On how to deliver what PowerShell can do. Then I saw on some forum people asking BGInfo to expand and allow running PowerShell scripts so that the data on the BGInfo Wallpaper can be gathered from PowerShell rather than VBS. I thought this was a great idea to create BGInfo using PowerShell without the necessity of using BGInfo at all.",
      "date_published": "2023-01-01T15:51:00.0000000Z",
      "tags": [
        "bginfo",
        "desktop manager",
        "module",
        "powerbginfo",
        "powershell",
        "wallpaper",
        "windows"
      ]
    },
    {
      "id": "https://evotec.pl/blog/powerbginfo-powershell-alternative-to-sysinternals-bginfo",
      "url": "https://evotec.pl/blog/powerbginfo-powershell-alternative-to-sysinternals-bginfo",
      "title": "PowerBGInfo \u2013 PowerShell alternative to Sysinternals BGInfo",
      "summary": "When I created ImagePlayground, I thought about how to show its usefulness to the general community. On how to deliver what PowerShell can do. Then I saw on some forum people asking BGInfo to expand and allow running PowerShell scripts so that the data on the BGInfo Wallpaper can be gathered from PowerShell rather than VBS. I thought this was a great idea to create BGInfo using PowerShell without the necessity of using BGInfo at all.",
      "date_published": "2023-01-01T15:51:00.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/image-manipulation-image-resize-image-combine-and-more-with-powershell",
      "url": "https://evotec.pl/blog/image-manipulation-image-resize-image-combine-and-more-with-powershell",
      "title": "Image Manipulation, Image Resize, Image Combine and more with PowerShell",
      "summary": "ImagePlayground is a PowerShell module that works in PowerShell 5.1 and PowerShell 7\u002B. It works partially on Linux and should work on macOS, except for charts. That means it\u2019s partially cross-platform, but the end goal is to make it work fully on all platforms. So what can this module do?",
      "date_published": "2023-01-01T15:50:41.0000000Z",
      "tags": [
        ".net",
        ".NET Products",
        "bar code",
        "combine",
        "convert",
        "exif data",
        "grayscale",
        "image",
        "image manipulation",
        "linux",
        "macos",
        "net core",
        "net framework",
        "net standard",
        "powershell",
        "qr code",
        "watermark",
        "xplat"
      ]
    },
    {
      "id": "https://evotec.pl/blog/image-manipulation-image-resize-image-combine-and-more-with-powershell",
      "url": "https://evotec.pl/blog/image-manipulation-image-resize-image-combine-and-more-with-powershell",
      "title": "Image Manipulation, Image Resize, Image Combine and more with PowerShell",
      "summary": "ImagePlayground is a PowerShell module that works in PowerShell 5.1 and PowerShell 7\u002B. It works partially on Linux and should work on macOS, except for charts. That means it\u2019s partially cross-platform, but the end goal is to make it work fully on all platforms. So what can this module do?",
      "date_published": "2023-01-01T15:50:41.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/easy-way-to-send-emails-using-microsoft-graph-api-office-365-with-powershell",
      "url": "https://evotec.pl/blog/easy-way-to-send-emails-using-microsoft-graph-api-office-365-with-powershell",
      "title": "Easy way to send emails using Microsoft Graph API (Office 365) with PowerShell",
      "summary": "When you\u2019re using Office 365 and want to send an email, you have two choices SMTP or Microsoft Graph API, which is a \u201Cnew\u201D kid on the block. For some time, I\u2019ve used Microsoft Graph exclusively to send emails in favor of SMTP as it\u2019s much easier to manage and generally works over HTTPS. If you type in google \u201CSend email graph API PowerShell,\u201D you will get lots of hits as bloggers, and Microsoft has already covered this topic. It\u2019s 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\u2019s far from being easy \u0026 user-friendly. Over two years ago, I released a PowerShell module called Mailozaurr (some people may not like my modules\u2019 naming \u2013 but that\u2019s how I roll!). In a blog post, Mailozaurr \u2013 New mail toolkit (SMTP, IMAP, POP3) with support for oAuth 2.0 and GraphApi for PowerShell, I\u2019ve shown a basic functionality on how to send emails using SMTP OAuth 2.0 or Graph API, which aims to be drag \u0026 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.",
      "date_published": "2022-10-09T13:27:27.0000000Z",
      "tags": [
        "Azure Application",
        "emails",
        "Exchange",
        "graph api",
        "microsoft graph",
        "oauth2",
        "office 365",
        "powershell",
        "send-emailmessage",
        "send-mailmessage",
        "smtp"
      ]
    },
    {
      "id": "https://evotec.pl/blog/easy-way-to-send-emails-using-microsoft-graph-api-office-365-with-powershell",
      "url": "https://evotec.pl/blog/easy-way-to-send-emails-using-microsoft-graph-api-office-365-with-powershell",
      "title": "Easy way to send emails using Microsoft Graph API (Office 365) with PowerShell",
      "summary": "When you\u2019re using Office 365 and want to send an email, you have two choices SMTP or Microsoft Graph API, which is a \u201Cnew\u201D kid on the block. For some time, I\u2019ve used Microsoft Graph exclusively to send emails in favor of SMTP as it\u2019s much easier to manage and generally works over HTTPS. If you type in google \u201CSend email graph API PowerShell,\u201D you will get lots of hits as bloggers, and Microsoft has already covered this topic. It\u2019s 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\u2019s far from being easy \u0026 user-friendly. Over two years ago, I released a PowerShell module called Mailozaurr (some people may not like my modules\u2019 naming \u2013 but that\u2019s how I roll!). In a blog post, Mailozaurr \u2013 New mail toolkit (SMTP, IMAP, POP3) with support for oAuth 2.0 and GraphApi for PowerShell, I\u2019ve shown a basic functionality on how to send emails using SMTP OAuth 2.0 or Graph API, which aims to be drag \u0026 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.",
      "date_published": "2022-10-09T13:27:27.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/adaptive-cards-with-tables-and-linebreaks-in-microsoft-teams",
      "url": "https://evotec.pl/blog/adaptive-cards-with-tables-and-linebreaks-in-microsoft-teams",
      "title": "Adaptive Cards with Tables and Linebreaks in Microsoft Teams",
      "summary": "PSTeams is a PowerShell module that helps simplify sending notifications to Microsoft Teams via Incoming webhooks. It\u2019s easy to use and doesn\u2019t require playing with JSON. Since version 2.0, it started to support Adaptive Cards; in version 2.1, I\u2019ve added the ability to mention people. Today I\u2019m introducing an easy way to send data as a table and a quick way to add a line break.",
      "date_published": "2022-08-21T16:07:01.0000000Z",
      "tags": [
        "adaptive cards",
        "microsoft teams",
        "office 365",
        "powershell",
        "teams"
      ]
    },
    {
      "id": "https://evotec.pl/blog/adaptive-cards-with-tables-and-linebreaks-in-microsoft-teams",
      "url": "https://evotec.pl/blog/adaptive-cards-with-tables-and-linebreaks-in-microsoft-teams",
      "title": "Adaptive Cards with Tables and Linebreaks in Microsoft Teams",
      "summary": "PSTeams is a PowerShell module that helps simplify sending notifications to Microsoft Teams via Incoming webhooks. It\u2019s easy to use and doesn\u2019t require playing with JSON. Since version 2.0, it started to support Adaptive Cards; in version 2.1, I\u2019ve added the ability to mention people. Today I\u2019m introducing an easy way to send data as a table and a quick way to add a line break.",
      "date_published": "2022-08-21T16:07:01.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/working-with-virustotal-from-powershell",
      "url": "https://evotec.pl/blog/working-with-virustotal-from-powershell",
      "title": "Working with VirusTotal from PowerShell",
      "summary": "Virus Total is an excellent service. It\u2019s 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\u2019s 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\u2019t seen the DLL or PowerShell module in this form before. I\u2019ve seen it happen to DBATools, so why not try and push my modules before users even use them?",
      "date_published": "2022-08-10T18:25:07.0000000Z",
      "tags": [
        "api",
        "powershell",
        "restapi",
        "security",
        "virus",
        "virus total"
      ]
    },
    {
      "id": "https://evotec.pl/blog/working-with-virustotal-from-powershell",
      "url": "https://evotec.pl/blog/working-with-virustotal-from-powershell",
      "title": "Working with VirusTotal from PowerShell",
      "summary": "Virus Total is an excellent service. It\u2019s 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\u2019s 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\u2019t seen the DLL or PowerShell module in this form before. I\u2019ve seen it happen to DBATools, so why not try and push my modules before users even use them?",
      "date_published": "2022-08-10T18:25:07.0000000Z",
      "tags": []
    },
    {
      "id": "https://evotec.pl/blog/reporting-group-membership-for-critical-active-directory-groups",
      "url": "https://evotec.pl/blog/reporting-group-membership-for-critical-active-directory-groups",
      "title": "Reporting group membership for critical Active Directory groups",
      "summary": "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.",
      "date_published": "2022-08-07T11:57:28.0000000Z",
      "tags": [
        "active directory",
        "ad",
        "group membership",
        "groups",
        "nested groups",
        "powershell",
        "Windows"
      ]
    },
    {
      "id": "https://evotec.pl/blog/reporting-group-membership-for-critical-active-directory-groups",
      "url": "https://evotec.pl/blog/reporting-group-membership-for-critical-active-directory-groups",
      "title": "Reporting group membership for critical Active Directory groups",
      "summary": "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.",
      "date_published": "2022-08-07T11:57:28.0000000Z",
      "tags": []
    }
  ]
}