Skip to content

Instantly share code, notes, and snippets.

View bcdady's full-sized avatar
👨‍💻
:terraform:

Bryan Dady bcdady

👨‍💻
:terraform:
View GitHub Profile
@bcdady
bcdady / gist:06ed3e9b0210bae54e70
Created April 28, 2015 12:19
Get Help for all commands in a module
# Quickly list out all commands in a new PowerShell Module, andcheck that they each have useful help content
Get-Command -Module ProfilePal | foreach {get-help $_}
@bcdady
bcdady / Get-DHCPadapters.ps1
Created May 1, 2015 21:01
PowerShell One-Liner: Enumerate all DHCP enabled Network Adapters via WMI / CIM, using an embedded CIM query as the -Filter
# Step 1, filter network adapters to those that are IP & DHCP enabled
# - this can only be done with the Win32_NetworkAdapterConfiguration class:
Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter 'IpEnabled=True AND DhcpEnabled=True'
# To get a unique handle to any/all network adapters matching the filtered query, retrieve only their Index propery:
(Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter 'IpEnabled=True AND DhcpEnabled=True').Index
# Using the Index property, enumerate objects in the Win32_NetworkAdapter class, with the same Index (aka DeviceID) property:
# - notice the prior Get-CimInstance query gets wrapped in another $(), to force returning only the resulting value into this Filter statement
# - I added | Format-List, because the default Table formatted results truncated the value of the .Name property
@bcdady
bcdady / gist:25065e63e1564ca06b42
Created October 14, 2015 05:03
Set kdiff3 (from TortoiseHG) as Git mergetool
[mergetool "kdiff3"]
cmd = \"c:\program files/TortoiseHg/kdiff3.exe\" '-auto' \"$BASE\" \"$LOCAL\" \"$REMOTE\" '-o' \"$MERGED\"
trustExitCode = false
@bcdady
bcdady / gist:c9fc5e8733f19abf83d7
Created October 20, 2015 21:33
Repeat a string in PowerShell
http://rosettacode.org/wiki/Repeat_a_string#PowerShell
@bcdady
bcdady / ModuleDrives.ps1
Last active February 3, 2016 04:48
Mount drive letters for each Module Path
$driveIndex = 1
$env:PSModulePath -split ';' | Sort-Object | foreach { New-PSDrive -Name "PSMods$driveIndex" -PSProvider filesystem -Root $PSItem; $driveIndex++ }
Get-PSDrive -PSProvider FileSystem
@bcdady
bcdady / Get-WinRMListener.ps1
Last active February 24, 2016 20:56
Test-WSMan alternative, with custom PS Object
$Private:WinRMListener = & winrm e winrm/config/listener; foreach ($line in $Private:WinRMLTokens = $WinRMListener -split '\n') { $Private:lineTokens = $line -split '=';if ($lineTokens[0] -like '*Source*') { $Private:source = $($lineTokens[1]).trim().replace('"','').replace(']','') }; if ($lineTokens[0] -like '*Transport*') { $Private:Transport = $($lineTokens[1]).trim() }; if ($lineTokens[0] -like '*Port*') { $Private:Port = $($lineTokens[1]).trim() }; if ($lineTokens[0] -like '*Enabled*') { $Private:Enabled = $($lineTokens[1]).trim() }; if ($lineTokens[0] -like '*ListeningOn*') { $Private:ListeningOn = $(($lineTokens[1] -split ',')[0]).trim() } }; $Private:properties = [ordered]@{ 'Source' = $source; 'Transport' = $Transport; 'Port' = $Port; 'Enabled' = $Enabled; 'ListeningIP' = $ListeningOn }; $Private:WinRMListenerInfo = New-Object -TypeName PSObject -Property $properties; $WinRMListenerInfo
@bcdady
bcdady / Get-MyAcctGroups.ps1
Created February 25, 2016 04:42
# Get Groups your account is a member of, via WMI
$MyAcctGroups = Get-WmiObject -Query "ASSOCIATORS OF {Win32_Account.Name='$env:username',Domain='$env:USERDOMAIN'} WHERE ResultRole=GroupComponent REsultClass=Win32_Account"
$MyAcctGroups | Get-Member
$MyAcctGroups
@bcdady
bcdady / find-str_PSmod
Last active November 10, 2016 14:45
Find a string within any file included in a PowerShell module
# search string within All Modules
# e.g. find '-function' within any file in a module
$env:PSModulePath | ForEach-Object { $_ -split ';' | Get-ChildItem -Filter *.ps* -Recurse | Select-String -Pattern 'Write-Log' -SimpleMatch}
# Enumerate files (full path) that have a matching string found within
# In this example, only PowerShell files (*.ps*1) are being searched for the simple wildcard string 'servicegroup'
PS .\> gci -Path .\ -Filter *.ps*1 -Recurse -File | Select-String -SimpleMatch servicegroup | group -Property Path | select -ExpandProperty Name
@bcdady
bcdady / gist:e3ac78cd27e4dcd82699
Created April 26, 2015 15:20
Import posh-git module to an existing console (non Git Shell)
# Starting a new PowerShell (PS) console on a Windows OS instance that has GitHub client for Windows installed ...
# Find the local instance of git.exe; it's an 'external' dependency for posh-git
Get-ChildItem -Path $env:LocalAppData\GitHub\ -Filter git.exe -Recurse
# Should return at least 1 instance of git.exe
# Select one and add an alias to it
# I choose the one in \bin\ for example:
New-Alias -Name git -Value $env:LOCALAPPDATA\GitHub\PortableGit_c2ba306e536fdf878271f7fe636a147ff37326ad\bin\git.exe