• Get-Hash Get hash for a string.
  • Update-FileWriteTime Touch a file.
  • Test-TLSConnection Test if TLS Connection can be established.
  • Test-TCPConnection Test if a TCP Connection can be established.
  • Test-SfBDiscover Test the Lyncdiscover service for Skype for Business/Lync deployments.
  • Test-SfBDNS Test DNS entries for Skype for Business / Lync deployments.
  • Show-EtcHosts Display hosts file content.
  • Remove-EtcHostsEntry Remove an entry from local hosts file by it's IP address.
  • Get-MacAddressVendor Mac Address vendor lookup.
  • Edit-EtcHosts Edit hosts file with notepad.
  • ConvertTo-SID Get the SID for an account name.
  • ConvertTo-Base64 Convert a String to Base64.
  • ConvertFrom-SID Get the account name for a SID.
  • ConvertFrom-Base64 Convert Base64 to ClearText String.
  • Connect-SfB A quick function to connect to Skype for Business / Lync Servers.
  • Connect-Exchange A quick function to connect to Exchange Servers.
  • Add-EtcHostsEntry Add an entry to local hosts file.


  • PowerShell and Variable References

    I’ve come across an interesting behavior (or feature) of PowerShell the other day. As I don’t really understand what’s going on, I decided to write it up, maybe someone out there can help explaining this.

  • Keeping track of PowerShellCore releases on GitHub

    I’ve been using PowerShell Core on my MacBook for a while now. As the code is still in its early stages, there’s no way of managing/updating the software one is running, at least none that I would be aware of. I did miss some updates and, as a result, had problems with Visual Studio Code. So I’ve put together a quick function that checks the latest release on GitHub and can conveniently be put into my $PROFILE.

  • Disable Azure Backup Protection for a VM with Azure PowerShell

    My Azure credits burn faster than expected :) So I decided to remove some VM’s and Backup that I used for a customer’s demonstration. Since I don’t use the Azure Portal for configuration anymore, I fired up Powershell and did the Job. With the following commands, I show you how to stop the Backup for a Virtual Machine and delete the associated Recovery Points.

  • Start-TestWebServer Webserver for load balancer testing.
  • Convert PowerShell Help to a Website

    With the migration of our little blog I’m also trying move the help content for various PowerShell scripts/modules to a central location and make updating/managing that content easier. I’ve recently found the platyPS module, which can be used to create markdown formatted files for PowerShell help topics.

  • Introducing: TAK

    Over the years I did create, find, copy, paste, quite a few lines of PowerShell code. Some of which I’m turning into re-usable functions and collecting in a module, creatively called “Tom’s Admin Kit” or TAK. I hope you find it useful. I try to credit the sources for the stuff that I just copied off of the interwebs, even though I don’t actually remember all of them.

  • PowerShell on macOS

    Just sharing some quick notes on how to run PowerShell (and dotnet core) on macOS Sierra.

  • Create-UcsZoningHints

    This script uses the CiscoUcs PowerTool to get information about one or more service profiles and creates SIST zoning configuration for NX-OS. The Target’s device-alias as well as the name for the ZoneSet and the VSAN can be specified with parameters. Zone names will be automatically created.

  • Restore-VMPermission

    Adds permissions for the VMId to all assigned disks.

  • Invoke-SEFAUtil

    This is a wrapper function for the SEFAUtil.exe tool from the Lync Resource Kit Tools. It’s intended purpose is to make dealing with the cmdline tool easier.

  • Test-GroupMembership

    This function uses [ADSI] to test group membership based on the constructed security token of the principal. You can pipe objects to this function. The function writes $true or $false for each tested object.

  • Start-LyncBackup

    This script exports Lync Core Data and Settings according to the documentation availabe on TechNet It is intended to be run as scheduled task, the Retention parameter can be used to indicate how long to keep existing backup files in the target directory.


  • Testing CoinHive

    I’ve recently stumbled upon coinhive and with all the recent fuzz about crypto currencies, I decided to have a look at it. So what’s that all about?

  • Jekyll on WSL

    Today we are looking at running Jekyll on WSL or Bash on Ubuntu on Windows.

  • Jekyll Fun: Consuming ntSystems with PowerShell

    As you might have read before, our little blog is powered by Jekyll. Well I stumbled over the jsonify filter the other day, and so I built a little “kind-of” API :) Sound interesting? Read on.

  • Migrating from BlogEngine to GitHub Pages: Fixing the links

    In this episode of our little series on migration we are having a look at the URL structure of Jekyll and some of the less visible stuff that was associated with the old ntSystems.

  • Migrating from BlogEngine to GitHub Pages: BlogML to Markdown

    As promised here, I’m sharing the first part of our migration process from BlogEngine to GitHub Pages. A major part is, obviously, the migration of the content of the blog itself.

  • Welcome to our new blog!

    This site has been running on Azure Web Sites for some time. As we are doing this for fun and are not making any money with the site (see any ad?) we had to use the “Shared” pricing tier which was economically acceptable but from a performance and feature point-of-view, well, not great. We used Cloudflare to get some caching and enable stuff like https and IPv6 for the site and it was OK :) Then came…


  • Lync SDN API and Cisco WLC

    Some days ago I had the chance to test Cisco’s Wireless LAN Controllers with the Lync Software Defined Networking (SDN) API.

  • ActiveDirectory DisplayName mit Umlauten und AudioCodes ISDN

    Vor einigen Tagen bin ich in einem Lync Projekt auf das Problem gestoßen, dass bestimmte Benutzer keine Anrufe in das PSTN (ISDN E1) tätigen konnten. Der Kunde setzt ein AudioCodes Gateway ein, die Syslogs des Gatways sind zur Fehlersuche sehr gut geeignet. Das Gateway bekommt die SIP Signalisierung von Lync sowie die Q.931 Signalisierung aus dem ISDN mit.


  • My takeaways from MS Tech Summit

    Daniel and I have attended the Microsoft Tech Summit in Milan earlier this week. Overall it was a pretty good event, especially taking into account that it was free. The keynote was quite interesting, so much so, that I thought I’d share my takeaways.

  • AzureStack POC TP2 on VMware

    I’ve been trying to make the Azure Stack Proof-of-Concept (Preview 2) run on VMware and here is what I found.


  • Azure Site Recovery Deployment Planner

    Today I was super excited about the first tests with the Azure Site Recovery Deployment Planner. Sometimes calculating the Bandwidth, Storage, local infrastructure needed for Site Recovery can be very tricky. Therefore, I’m happy that Microsoft released a helpful tool to get the right information needed.

  • Get started with Azure ARM Templates

    To start with the deployment using Azure ARM Templates is quite easy. A first step can be to deploy an Azure SQL Database. But let’s start with a bit of background information:


  • Tunneling SSH through Tor

    I’ve been using Onion Services aka. Hidden Services to connect to remote machines for some time now. Tor clients can connect to such services through the Tor network, there is no need to know the IP address of the destination machine, likewise there is no need to configure inbound port mappings or firewall rules.

  • The Invisible Internet Project and WSL

    The Windows Subsystem for Linux can be used to run quite a few interesting things on Windows, one of them is the Invisible Internet Project or i2p.


  • Get Going with Go!

    Everyone is talking about Go these days so I decided to have a look at it and see what it could do for me.