Set up Yubikey for PowerShell Code Signing

Intro As I wrote in my previous post Using a Yubikey for PowerShell CodeSigning I’m using a Yubikey to store my code signing certificate. This way I can easily carry my cert with me, use it on different computers and not have to worry about losing my private key. In this post, I’m describing how I set up my Yubikey. Setting up the key The Yubikey has a small command line tool called the “piv-tool”, it’s downloadable from Yubico’s website.

Wrong email in git? Git hook to the rescue!

Intro I use git as version control, it is great! But I use different email addresses in different situations and sometimes I get it wrong. Not a terrible problem but quite an annoyance. Let me show you an example: I recently contributed to the PowerShell repository (you can see my pull request here: Where-Object: add parameter ‘Not’) and I did an annoying mistake, I used the wrong email address. I have my work email configured in my global git config and sometimes I forget to change that to my private email when contributing to open source projects on GitHub.

Continuously deploying my PowerShell Modules

Continuously building and deploying new versions of my modules to internal repositories (or PowerShell Gallery) is something I really like. That way I can just push my code and let the automation handle the rest. Here are some learnings I’ve made. Deploy on tag Firstly, I usually only trigger a deploy-workflow on tags, this way I can manually decide when to do a release and what version it will have without relying on any complex methods.

Modify access to site in SharePoint Online with PowerShell

Ever tried to modify permissions to a SharePoint site with a huge number of files in it?

You might experience something like this:

The attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator.

The attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator.

Managing permissions to a site in SharePoint Online is of course doable with PowerShell! I thought I’d quickly go through the basics.


First of all we need to download the SharePoint Online Management Shell. This can be done by following this link:

But what’s the fun in that when we can use PowerShell?

Disclaimer: This code uses a permanent link to the msi file, this might break in the future!

Invoke-WebRequest -Uri '' -OutFile .\SPOShell.msi
$MSI = Get-Item -Path .\SPOShell.msi
msiexec /i $MSI.FullName /qb
$env:PSModulePath = [System.Environment]::GetEnvironmentVariable("PSModulePath","Machine")
Import-Module -Name Microsoft.Online.SharePoint.PowerShell -DisableNameChecking

PowerShell, ActiveDirectory and the elusive Filter parameter

When searching for users in Active Directory using PowerShell, the ActiveDirectory module is often one of the first things that comes in to mind. The module has been around for quite som time now but there is one problem that many users still stumbles on, the Filter parameter. There are basically three methods for searching after a user with Get-ADUser.

tl;dr;** This article explains how use the -Filter parameter when searching AD, if you just want the answer, skip down to the **Solution.