Skip to content

Instantly share code, notes, and snippets.

View jschlackman's full-sized avatar

James Schlackman jschlackman

View GitHub Profile
# Name: Get-AzureStorageEncryptionDetails.ps1
# Author: James Schlackman
# Last Modified: May 1 2024
#
# Lists all storage accounts with their encryption settings.
#Requires -Modules Az.Accounts, Az.Storage
Param(
[Parameter()] [String] $AzTenant,
# Name: Update-JiraUsersForSSO.ps1
# Author: James Schlackman
# Last Modified: Apr 9 2024
# Searches for and updates Jira users in preparation for SSO by changing their login name to match their email address.
#Requires -Modules JiraPS
Param(
# Jira server to connect to
@jschlackman
jschlackman / ConnectWise Access Management webhook payload for Teams.json
Created January 18, 2024 17:52
JSON payload for webhooks sent from ScreenConnect to Teams for the ConnectWise Access Management feature. This is an alternative to the official integration, allowing more flexibility in terms of which requests are forwarded and using more concise and modern adaptive card formatting.
{{
"type": "message",
"attachments": [
{{
"contentType": "application/vnd.microsoft.card.adaptive",
"contentUrl": null,
"content": {{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.4",
# Name: Remove-ADUserAdmins.ps1
# Author: James Schlackman
# Last Modified: Dec 19 2023
# Clear individual non-local (e.g. AD) users from the local administrators group
# Notes:
# - Uses CIM to retrieve local group membership as Get-LocalGroupMember does not work without DC connectivity
# - Must be run in 64-bit PowerShell Host. The LocalAccounts module is not available in 32-bit PowerShell on a 64-bit system.
@jschlackman
jschlackman / Start-ExternalBackup.ps1
Created November 12, 2023 02:01
Runs an external backup executable, logs output, and sends email notifications. This example runs the FastGlacier console application to sync a local folder hierarchy with S3 Glacier storage.
# Name: Start-ExternalBackup.ps1
# Author: James Schlackman
# Last Modified: Nov 11 2023
# Runs an external backup executable, logs output, and sends email notifications.
Param(
# External backup executable
[Parameter()] [String] $BackupExe = "$env:ProgramFiles\FastGlacier\glacier-con.exe",
# Backup job arguments to pass to executable
# Name: Get-EntraGuestDetails.ps1
# Author: James Schlackman
# Last Modified: Oct 27 2023
#
# Audits guest users in Entra ID, optionally filtered by start and/or end dates for when users were invited to the directory.
#
# Last sign in date for Entra requires an Entra ID Premium license.
#Requires -Modules Microsoft.Graph.Authentication, Microsoft.Graph.Groups, Microsoft.Graph.Users
# Name: Remove-LegacyLAPSData.ps1
# Author: James Schlackman
# Last Modified: Oct 24 2023
# Clears the legacy LAPS attributes from specified computer accounts in AD. Use this to remove old password
# data from AD once Windows LAPS is deployed and storing password data in Entra ID.
#Requires -Modules ActiveDirectory
param (
# Name: Get-OldADMachines.ps1
# Author: James Schlackman
# Last Modified: Oct 23 2023
# 1. Finds computer accounts that have been inactive for more than specified time period and optionally disables them
# 2. Finds computer accounts that have been disabled for more than specified time period and optionally deletes them
#Requires -Modules ActiveDirectory
Param(
# Name: Get-AzurePrivateIpAddresses.ps1
# Author: James Schlackman
# Last Modified: Sep 26 2023
#
# Lists all defined network interfaces with their private IPs and VM allocations.
#Requires -Modules Az.Accounts, Az.Compute, Az.Network
Param(
[Parameter()] [String] $AzTenant,
# Name: Get-UserExchangeGroupMembership.ps1
# Author: James Schlackman
# Last Modified: Aug 29 2023
# Displays all Exchange Online distribution lists and Office 365 groups that a specified user is a member of,
# and optionally removes them from any groups that are not synced from on-prem AD.
#Requires -Modules ExchangeOnlineManagement
Param(