Sometimes you look back at your scripts and think... Hmmm, why did I use that ?! So I looked back at some scripts, changed a few things, and updated some of the blog posts. Check them out if you haven't already ;) (Check the sidebar for categories)
When you are in an environment with strict internet access, you need to figure out what to open to what destination for Microsoft services like Exchange Online, Teams, Endpoint Manager, and so on. Microsoft publishes this on their website but in the blog post, I would like to show you a nice way of outputting … Continue reading Get all Microsoft IP and FQDNs for their services
Last weekend this site passed the 25K views mark! Nice to see that people read my blogs and also that I get feedback on them, thank you all :) In this blog post, I would like to tell you about how I got into IT from a young age!
Just a little fun thing for a Friday, text-to-speech! We used this many years ago at the office, sending this to the laptop of a colleague and having fun while he’s trying to figure out where the voice is coming from 🙂 How it works There is a System.Speech assembly which can be used to … Continue reading Text-To-Speech using PowerShell
I published my first article here over 4 years ago.
Well, not exactly here, but we’ll get to that in a few.
It had been over a year since I published any article prior to the end of August.
A myriad of reasons all claim a part of “why didn’t I”.
Perhaps ironically (for a technical site), one of the reasons was purely technical.
As discussed in an early article, How I Blog, this site is a generated static site powered by Jekyll.
Reading logs is always something you just have to do, but the Intune logs are not easy to read without tools like CMTrace on the user's device. (The formatting is not that nice without it) In this blog post, I will show you an easy way to read one or two specific logs, or all the logs at once, and each in its own Out-Gridview console for easy filtering when searching for keywords.
About a week ago, I commented on a PowerShell forum post and the poster struck up a conversation in my DMs.
He is starting his own PowerShell blog and wanted to ask me a few questions.
(Insert self-deprecating comment here.)
I thought that the questions and my responses may help provide some insight for others.
1. What is your writing process? Do you write on subjects you are currently learning about or want to research more?
Sometimes the writing is the easy part.
Recently the Exchange Online Module v2 came out with support for connecting to Exchange Online via a managed identity. The module has several parameters:
When using the ManagedIdentity parameter you must also call the Organization parameter which is the initial, or ‘.onmicrosoft’ domain.
What You Will Need
Az PowerShell Module (install-module az)
The Microsoft Graph SDK (install-module Microsoft.
In this write-up I will be creating a basic off-boarding automation that uses SharePoint as the front end, and PowerShell, the Graph API, and Azure Runbooks as the back-end. HR will input the users UPN or Email, offboard date/time, and a forwarding address to forward email to. Once the off-boarding datetime is within 1hr the automation will check the user in Azure AD to ensure its valid, the forwarding user is valid in Azure AD, document in SharePoint the users e-mail address, any and all licenses, and all group memberships.
Okay, Microsoft Graph API is cool, but sometimes it’s boring to deal with all these hashtables and arrays. The Send-MgUserMail is a great graph cmdlet to send Emails using the Graph API endpoint, this post is fully explained in the Send-MgUserMail BodyParameter Explained. But going through these hashtables is a challenge, and its more complicated...
The post PowerShell Script to Simplify Send-MgUserMail appeared first on Faris Malaeb.
Heute möchte ich eine kleine Funktion zeigen, welche die Mitgliedschaft eines Azure AD Benutzers in einer Azure AD Gruppe abprüft. Dies kann hilfreich bei einer Automatisierung im Bereich Azure AD sein. Bei richtiger Benutzung gibt das Script immer TRUE bzw. FALSE zurück. Was kann das Teil: 1. Gib bei Mitgliedschaft TRUE bzw. FALSE zurück wenn …
Mehr über "Azure AD PowerShell Prüfen ob ein Benutzer Mitglied einer Gruppe ist" Lesen
Der Beitrag Azure AD PowerShell Prüfen ob ein Benutzer Mitglied einer Gruppe ist erschien zuerst auf IT koehler blog.
Send-MailMessage is obsolete and no longer supported. Microsoft says this cmdlet does not guarantee a secure connection to SMTP servers. We will use Send-MgUserMail. This tutorial takes you through using Send-MgUserMail to send emails instead of Send-MailMessage Using Send-MailMessage When you try to use the Send-MailMessage cmdlet, you get the following warning. WARNING: The command...
The post Send-MgUserMail BodyParameter Explained appeared first on Faris Malaeb.
I wanted to create an automated alert that would notify me of Office 365 mailboxes that were approaching full, and found a terrific PowerShell reporting script by Ruud (LazyAdmin.nl). If you have not checked out his blog, stop reading now and head on over there. There is a ton of great scripts and write ups! The script connects to your Office 365 environment and exports the following:
Primary Email address
Last user action time
Total mailbox size
Mailbox Free Space (NEW!)
Deleted item size
Deleted Item Count
Issue Warning Size
Prohibit Send Receive Quota (max mailbox size)
Archive size (if the user has an archive)
Archive Item Count
Archive Mailbox Free Space (NEW!)
Archive Deleted Item Count
Archive warning quota
It also allows you to filter the mailbox type that you want to gather results for.
I was recently tasked with clearing out a Yammer Communities auto-welcoming posts. If you are not familiar with auto-welcoming posts, Yammer used to automatically post a message whenever someone joined a community. It looked something like this, “Bradley Wyatt joined the Lazy Administrator network. Take a moment to welcome Brad.”
Thankfully, Microsoft removed this feature so your community is not littered with auto welcoming messages anymore.
PowerShell is a cross-platform scripting language that runs on Windows, Linux, and macOS.
ArcoLinux is a rolling release Linux distribution based on Arch Linux.
Prerequisites ArcoLinux was installed using the ArcoLinuxL ISO with the easy installation option. The examples shown in this article were performed using Xfce Terminal. ArcoLinux was fully updated using the sudo pacman -Syu command. Installation Verify that you have PowerShell installed:
pwsh --version If you receive the error: command not found, see Install PowerShell on ArcoLinux to install PowerShell.
I just saw a very, very handy thing on Twitter where you can set a registry key that will automatically accept all EULA prompts for the SysInternals tools. I know there is a command-line switch I can use, but I never remember to use it. Setting the registry key appears to accept EULAs globally. Naturally,...
Contents Contents Scenario Citrix Hypervisor and PowerShell? Conculsion Learning More Value for Value Scenario I’ve been hesitant to dive into Citrix Hypervisor PowerShell cmdlets, but there’s no rational reason to not do it. Citrix continues to make great strides in expanding and updating PowerShell for its hypervisor, PVS, and XenDesktop....
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.
The post Adaptive Cards with Tables and Linebreaks in Microsoft Teams appeared first on Evotec.
Why is my navigation bar to the left now, and now at the bottom anymore? You’ve probably enabled the ‘Try it now‘ option in Outlook. Enabling this option will enable new features in Outlook earlier. These will be placed in a registry entry.When the option is enabled, these registry options are available at this time: … Continue reading How to move the navigation bar in Outlook back to the bottom
The post How to move the navigation bar in Outlook back to the bottom appeared first on Bas Wijdenes.
With the superannuation of AzureAD and the MSOnline module, Microsoft Graph API is the new direction for cloud computing. To maintain and configure Office 365 or Microsoft 365, admins must ensure they can link to Microsoft Graph API endpoints. Using only a single REST API point (https://graph.microsoft.com), you can connect to any object in the...
The post Connect to Office 365 Using Graph API and PowerShell appeared first on Faris Malaeb.
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 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.
No one can deny the superior help of AzureAD and MSOL PowerShell modules and how these two made cloud management straightforward. But the end for these two modules is nearby, and the direction is the Graph API. Let’s start now and learn the migration steps from the old modules to Graph API. If you’re new...
The post Migrate Your Script from AzureAD or MSOnline to Graph API appeared first on Faris Malaeb.
I spend my working days living in a PowerShell console. Over the years, I’ve developed many PowerShell modules to help me manage the chaos that is my work life. One area that always demands attention is managing my tasks and To-Dos. For several years I have been using the MyTasks module. This module stored tasks...
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.
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.
The post Finding duplicate DNS entries using PowerShell appeared first on Evotec.
This morning I woke up with a mission; I wanted to fix HP warranty reporting for my PSWarranty PowerShell Module. If you’re not familiar yet I’ve blogged about the module and warranty reporting before here. Most of the module has been left the same so you can reference that blog for more information.
Between that blog and now the PSWarranty module has had a lot of updates.
Recently Microsoft has introduced a new feature in Azure Active Directory which allows the admin to specify which group should be written back to your On-Premise Active Directory and the writeback scope. In today’s PowerShell script, the script report which Azure AD Group enabled for Group writeback through reading the AAD Group writebackConfiguration resource in...
The post Find Which Azure AD Group Configured For Writeback appeared first on Faris Malaeb.
In this post, I will explain how to generate a report for Active Directory users and each group a user is a member of. So if UserA is a member of five groups, the report shows all these groups and exports the result as CSV. Prerequisites You need Windows PowerShell 5.1 or PowerShell 7. Also,...
The post Active Directory Groups Membership Report Using PowerShell appeared first on Faris Malaeb.
Today’s post will cover the basics of using PowerShell to send Teams messages to users (One to One). This is through utilizing Microsoft Graph APIs. Prerequisites You need to download PowerShell Graph SDK from Microsoft PowerShell Gallery. Required permission scope: Chat.ReadWrite Chat.Create If you are new to Microsoft Graph, then you can read more about...
The post Send HTML Teams Message Using PowerShell Graph appeared first on Faris Malaeb.
The following PowerShell script allows you to add multiple Azure AD Named location IP address ranges using Microsoft Graph API PowerShell Module. You need to download the Microsoft Graph PowerShell SDK. You can read more about Microsoft Graph SDK and how to use it in a previous post Understanding Microsoft Graph SDK PowerShell The Script...
The post Adding Multiple Azure AD Named Location Using Graph API appeared first on Faris Malaeb.
Let’s get rid of special characters like ï»¿, ÿþ, þÿ aka Byte-Order-Mark characters When reading Azure Storage Blobs, you regularly get the BOM bytes back with the content. As a result, you cannot format or convert json to an object, for example. A colleague of mine wrote a function for this in PowerShell. In my … Continue reading How to remove Byte-Order-Mark with PowerShell
The post How to remove Byte-Order-Mark with PowerShell appeared first on Bas Wijdenes.
A week of Desired State Configuration (aka Configuration Drift) for Endpoint Manager This week is all about Desired State Configuration or Configuration Drift as it is called at Wortell.This week we start with the implementation of DSC for Endpoint Manager. As I understand it from the management at Wortell, no other companies are working on … Continue reading July update 1 – Desired state configuration for the modern workplace
The post July update 1 – Desired state configuration for the modern workplace appeared first on Bas Wijdenes.
This is a reprint of an article published earlier this year in my premium PowerShell newsletter, Behind the PowerShell Pipeline. This is a sample of what my subscribers get 6-8 times a month. I expect I will write several articles about PowerShell and its relationship with objects. I know that this is the biggest hurdle...
About 8 months ago I’ve started a larger open source project called CIPP. CIPP is a M365 Management tool aimed at Managed Services Providers based on Azure Static Web Apps and a PowerShell backend. This blog shares some of the PowerShell code that’s used for the backend. CIPP is always looking for contributors on both the frontend and backend side so jump in if you’d like.
PowerShell is a cross-platform scripting language that runs on Windows, Linux, and macOS.
ArcoLinux is a rolling release Linux distribution based on Arch Linux. Like other Arch-based Linux distributions, ArcoLinux uses pacman for its package manager.
Prerequisites ArcoLinux was installed using the ArcoLinuxL ISO with the easy installation option. The examples shown in this article were performed using Xfce Terminal.
Some people host confluence from Atlassian on local infrastructure and no access to the cloud.I was curious if this could be an issue with learning whether or not your version is vulnerable. So here is something I noticed to be helpful to all Confluence admins that want to check and not worry about the deepContinue reading "Confluence CVE Vulnerability Checker"
Starting with something new on my blog! I notice that my work is increasingly focusing on a smaller topic (PowerShell) and that I have less to blog about. I miss blogging, so I came up with the monthly updates.In these updates I want to give an insight into my work & share what I did … Continue reading June update 1 – Visual Studio Code and debugging
The post June update 1 – Visual Studio Code and debugging appeared first on Bas Wijdenes.
Report Mailbox sizes, OneDrive sizes, or all in one, with PowerShell and the MS Graph API In the tutorial below I explain how you can: Report Mailbox sizes Report OneDrive Sizes Report both (in one report) In the blog post I use PowerShell and the Microsoft Graph API. I built my own modules around the … Continue reading Report Mailbox and OneDrive Size in PowerShell via Microsoft Graph API
The post Report Mailbox and OneDrive Size in PowerShell via Microsoft Graph API appeared first on Bas Wijdenes.
This post takes you through Microsoft Azure Active Directory Conditional Access policies using the PowerShell Graph SDK module. If you are new to the Graph module, go first and read the introductory post on Understanding Microsoft Graph SDK PowerShell Prerequisites You need to have the proper required permission on Azure Active Directory, usually a global...
The post Reading Conditional Access using PowerShell Graph SDK appeared first on Faris Malaeb.
In this post, I will explain how you can use the PowerShell SDK for Microsoft Graph to investigate Risky Users in your Azure Active Directory. I will also show you how to use PowerShell to connect directly to the Microsoft Graph and query the data from there. Being able to query for riskDetections, risky users, and sign-ins, allows you to automate alerts or actions whenever a user gets flagged in your risk policy.
Packer is an open-source tool that allows the standardization of our images for several platforms with a single template. It allows us a simple and declarative automation to create our reference images or our golden images.
2. How to install
It comes in the form of a single executable available on several platforms.
386 Amd64 Arm Arm64
A small particularity for the Windows world it will be necessary to add an environment variable to specify the path of the binary
I am pleased to announce that PowerShell Weekly has been redesigned and moved to its own sub-site psweekly.dowst.dev. All past posts and links are available there as well. What’s New New look and feel Thumbnails for every link Improved searching of the 2,000+ links Search by keyword, date, author, category Custom RSS Feed specifically the […]
You’re preparing to load an operating system. You find installation media for an unknown version of Windows. It’s not labeled. How do you determine the version of Windows on the installation media?
You can use the Get-WindowsImage cmdlet to determine the Windows version of installation media. This cmdlet is part of the Dism PowerShell module. It can be used with Windows PowerShell 5.1 and PowerShell 7 on Windows operating systems.
Administrators managing products such as Sharepoint, Teams, and Azure AD tend to use multiple PowerShell modules as each service has its own PowerShell module. Although this helped a lot, the real need is for a one-stop shop that helps in managing all the services instead of having multiple modules. The solution is to use the...
The post Connecting and Understanding Microsoft Graph API Using PowerShell appeared first on Faris Malaeb.
The conditional ternary operator is a feature added to PowerShell in version 7. You can use it as a simplified version of if/else.
The syntax for the ternary operator takes three operands:
A condition to evaluate followed by a question mark (?). An expression to execute if the condition is true, followed by a colon (:). And finally, an expression to execute if the condition is false. <conditi