Skip to content

Instantly share code, notes, and snippets.

View jschlackman's full-sized avatar

James Schlackman jschlackman

View GitHub Profile
#Requires -Module @{ModuleName='ExchangeOnlineManagement'; ModuleVersion='1.0.1'}
<#
.SYNOPSIS
Gets and optionally exports members of an Exchange Online distribution list or shared mailbox.
.DESCRIPTION
Gets members of an Exchange Online distribution list or shared mailbox, looks up the recipient/delegate details, and presents them to the user for optional export.
<#
.SYNOPSIS
Lists all defined network interfaces with their private IPs and VM allocations.
.DESCRIPTION
Author: James Schlackman <james@schlackman.org>
Last Modified: Mar 10 2026
.PARAMETER AccountId
User principal name of account used to authenticate to Azure. Tries to connect with the currently logged on username if not supplied.
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Sets the last logged on AD user at the login screen.
.DESCRIPTION
Sets the last logged on user on the Windows login screen to a specified AD user. If not specified
at launch, it will first check for a user in the managedBy attribute of the current computer and
offer the option to use that user automatically. If declined, prompts for an AD username to use instead.
<#
.SYNOPSIS
Downloads an .msi installer from an internet resource and installs it.
.DESCRIPTION
Downloads a signed .msi installer from an internet resource, validates the downloaded file's signature,
and silently installs it with the option to pass specified arguments.
Author: James Schlackman <james@schlackman.org>
<#
.SYNOPSIS
Lists all Azure storage accounts with their encryption settings.
.DESCRIPTION
Author: James Schlackman <james@schlackman.org>
Last Modified: Oct 29 2025
.PARAMETER AzTenant
Tenant domain name or ID
<#
.SYNOPSIS
Retrieves all mailboxes from Exchange that have automatic forwarding configured at the mailbox level.
.DESCRIPTION
Author: James Schlackman <james@schlackman.org>
Last Modified: Oct 29 2025
.PARAMETER OutputPath
Path to optional CSV export file.
<#
.SYNOPSIS
Assigns an imported list of users to an Okta application using the Okta API.
.DESCRIPTION
Imports a list of users from a CSV file, matches it against existing Okta users, and sets application assignments for each user in a specified application.
Author: James Schlackman <james@schlackman.org>
Last Modified: Oct 29 2025
<#
.SYNOPSIS
Retrieves all Exchange inbox rules that forward messages to another recipient.
.DESCRIPTION
Author: James Schlackman <james@schlackman.org>
Last Modified: Oct 29 2025
.PARAMETER OutputPath
Path to optional CSV export file.
<#
.SYNOPSIS
Create a basic self-signed certificate for "testing" purposes and save it in a password-protected PFX file.
.DESCRIPTION
Author: James Schlackman
Last Modified: Oct 15 2025
.PARAMETER DnsName
@jschlackman
jschlackman / Remove_VMwareTools.ps1
Last active September 23, 2025 23:45 — forked from broestls/Remove_VMwareTools.ps1
Force removal of VMware Tools, Program Files, and Windows Services
# This script will manually rip out all VMware Tools registry entries and files for Windows 2008-2019
# Tested for 2019, 2016, and probably works on 2012 R2 after the 2016 fixes.
# This function pulls out the common ID used for most of the VMware registry entries along with the ID
# associated with the MSI for VMware Tools.
function Get-VMwareToolsInstallerID {
foreach ($item in $(Get-ChildItem Registry::HKEY_CLASSES_ROOT\Installer\Products)) {
If ($item.GetValue('ProductName') -eq 'VMware Tools') {
return @{
reg_id = $item.PSChildName;