Skip to content

Instantly share code, notes, and snippets.

Avatar
🧑‍💻

Dave Carroll thedavecarroll

🧑‍💻
View GitHub Profile
@thedavecarroll
thedavecarroll / cibuild
Last active Sep 9, 2022
Recent Changes to the Site - thedavecarroll.com
View cibuild
#!/usr/bin/env bash
set -e # halt script on error
echo
echo "------------------------------------------------------------------------------------------------------------------------"
echo
if [ "$TRAVIS_PULL_REQUEST" != "false" -a "$TRAVIS_BRANCH" == "comments" ]; then
echo "Building site for pull request for $TRAVIS_BRANCH..."
echo
@thedavecarroll
thedavecarroll / Add-TimeSpan.sp1
Created Aug 10, 2022
Simple function to add timespan
View Add-TimeSpan.sp1
function Add-TimeSpan {
[CmdLetBinding(DefaultParameterSetName='TimeSpan')]
param(
[Parameter()]
[datetime]$Timestamp = (Get-Date),
[Parameter(Mandatory,ParameterSetName='TimeSpan')]
[timespan]$TimeSpan,
[Parameter(ParameterSetName='TimeSlice')]
[int]$Days,
[Parameter(ParameterSetName='TimeSlice')]
@thedavecarroll
thedavecarroll / myboto3_client.py
Last active Mar 30, 2022
Python Exception Logger and Boto3 Client
View myboto3_client.py
import boto3
from mylogger import logger,log_exception
def create_session(profile_name='default'):
logger.info(f'Creating new boto3 session with profile {profile_name}')
try:
return boto3.session.Session(profile_name=profile_name)
except:
raise Exception( log_exception() )
View Get-PSFollowFridayTweetText.ps1
function Split-Array {
[CmdletBinding()]
param (
[Parameter(Mandatory, ValueFromPipeline)]
[String[]] $InputObject
,
[ValidateRange(1, [int]::MaxValue)]
[int] $Size = 10
)
begin { $items = New-Object System.Collections.Generic.List[object] }
@thedavecarroll
thedavecarroll / Get-ErrorCategory.ps1
Last active May 29, 2021
Twitter API Error Mapping
View Get-ErrorCategory.ps1
function Get-ErrorCategory {
[CmdletBinding(DefaultParameterSetName = 'APIV1.1')]
param(
[Parameter(Mandatory, ParameterSetName = 'APIV1.1')]
[string]$StatusCode,
[Parameter(Mandatory, ParameterSetName = 'APIV1.1')]
[string]$ErrorCode,
[Parameter(Mandatory, ParameterSetName = 'APIV2')]
[string]$ErrorType
@thedavecarroll
thedavecarroll / Invoke-DiceRoll.ps1
Last active Apr 27, 2021
Simple Dice Roller, a la D&D
View Invoke-DiceRoll.ps1
function Invoke-DiceRoll {
[Alias('idr','roll')]
[CmdletBinding()]
param(
[ValidatePattern(
'^(?:[1-9]|0[1-9]|1[0-9]|20)d(4|6|8|12|20|30|100)$',
ErrorMessage='Valid die types are d4,d6,d8,d10,d12,d20,d30,d100 rolled beteen 1 and 20 times. Your input was {0}. Please try again.'
)]
[string]$Roll = '2d6',
[switch]$Total
@thedavecarroll
thedavecarroll / PSChangeLogTools .psm1
Last active Apr 1, 2021
PSChangeLogTools script module which uses local git log, GitHub release, and GitHub issues to generate changelog updates
View PSChangeLogTools .psm1
#Requires -Module PowerShellforGitHub
#Requires -Version 5.1
# GitLog Class
# class definition created by ConvertTo-ClassDefinition at 3/31/2021 9:47:01 PM for object type PSCustomObject
class PSGitLog {
[String]$CommitId
[String]$ShortCommitId
[DateTime]$AuthorDate
@thedavecarroll
thedavecarroll / 1-Intermediate.ps1
Last active Feb 16, 2021
Another PowerShell Math Challenge - IronScripter Challenge - 2021-02-09 (Intermediate Only)
View 1-Intermediate.ps1
#requires -Version 7
function Get-SumTotal {
[CmdLetBinding()]
param(
[Parameter(Mandatory,Position = 0,ValueFromPipeline)]
[ValidatePattern('^\d{1,10}$', ErrorMessage = '"{0}" does not match only numbers 0-9 with a maximum of 10.')]
#[ValidatePattern('^\d{1,10}$')]
#[ValidateScript({ if ($_ -notmatch '^\d{1,10}$') { throw ('{0}"{1}" does not match only numbers 0-9 with a maximum of 10.' -f [System.Environment]::NewLine,$_) } else { $true }})]
[string]$Value,
@thedavecarroll
thedavecarroll / SearchADDnsRecord.psm1
Last active Jan 4, 2022
This simple PowerShell script module uses a custom class and Get-ADObject to search an Active Directory-integrated DNS Zone by name or partial name.
View SearchADDnsRecord.psm1
#Requires -Version 5.1
#Requires -Module ActiveDirectory
$script:ADRootDSE = Get-ADRootDSE
class ADDnsNode {
# AD Object Properties
[String]$Name
[String]$CanonicalName
@thedavecarroll
thedavecarroll / PracticeChallenge.ps1
Created Feb 1, 2021
Scripting Challenge Meetup
View PracticeChallenge.ps1
$Splatting = Get-Help about_Splatting
$SortByWordCount = $Splatting -Split('\W+') | Where-Object {$_ -ne 'the'} | Group-Object | Sort-Object -Property Count -Descending
$Splatting | Select-Object Name,
@{l='NumberOfWords';e={$_.ToString() | Measure-Object -Word | Select-Object -ExpandProperty Words}},
@{l='TopWord';e={$SortByWordCount[0].Name}},@{l='TopWordCount';e={$SortByWordCount[0].Count}},
@{l='Top5Words';e={($SortByWordCount.Name | Select-Object -First 5) -join ','}}