Skip to content

Instantly share code, notes, and snippets.

View jschlackman's full-sized avatar

James Schlackman jschlackman

View GitHub Profile
<#
Name: Get-DomainMailSetup.ps1
Author: James Schlackman
Last Modified: Sep 30 2024
Retrieves an audit of MX, SPF, and DMARC records from public DNS for a given list of domains
#>
Param(
<#
Name: Update-VisualStudio.ps1
Author: James Schlackman
Last Modified: August 23 2024
Gets details of all current Visual Studio installs on this machine and attempts to run the updater for each installation found.
This script can be run using Task Scheduler or an RMM to periodicially check for and apply Visual Studio updates.
https://learn.microsoft.com/en-us/visualstudio/install/tools-for-managing-visual-studio-instances
# 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: May 20 2024
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