Skip to content

Instantly share code, notes, and snippets.


Bryan Dady bcdady

View GitHub Profile
bcdady / find-str_PSmod
Last active Nov 10, 2016
Find a string within any file included in a PowerShell module
View find-str_PSmod
# 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}
bcdady / gist:e3ac78cd27e4dcd82699
Created Apr 26, 2015
Import posh-git module to an existing console (non Git Shell)
View gist:e3ac78cd27e4dcd82699
# 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
bcdady / gist:06ed3e9b0210bae54e70
Created Apr 28, 2015
Get Help for all commands in a module
View gist:06ed3e9b0210bae54e70
# 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 / Get-DHCPadapters.ps1
Created May 1, 2015
PowerShell One-Liner: Enumerate all DHCP enabled Network Adapters via WMI / CIM, using an embedded CIM query as the -Filter
View Get-DHCPadapters.ps1
# 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 / gist:25065e63e1564ca06b42
Created Oct 14, 2015
Set kdiff3 (from TortoiseHG) as Git mergetool
View gist:25065e63e1564ca06b42
[mergetool "kdiff3"]
cmd = \"c:\program files/TortoiseHg/kdiff3.exe\" '-auto' \"$BASE\" \"$LOCAL\" \"$REMOTE\" '-o' \"$MERGED\"
trustExitCode = false
bcdady / gist:c9fc5e8733f19abf83d7
Created Oct 20, 2015
Repeat a string in PowerShell
View gist:c9fc5e8733f19abf83d7
bcdady / group-files.ps1
Last active Jan 30, 2016
User PowerShell to List files in a folder, Group by extension, sorted in descending order by most common extension(s)
View group-files.ps1
# -Recurse is optional
Get-ChildItem -Path $env:USERPROFILE\Downloads -Recurse | Group-Object -Property Extension | sort -Descending -Property Count
bcdady / ModuleDrives.ps1
Last active Feb 3, 2016
Mount drive letters for each Module Path
View ModuleDrives.ps1
$driveIndex = 1
$env:PSModulePath -split ';' | Sort-Object | foreach { New-PSDrive -Name "PSMods$driveIndex" -PSProvider filesystem -Root $PSItem; $driveIndex++ }
Get-PSDrive -PSProvider FileSystem
bcdady / Get-WinRMListener.ps1
Last active Feb 24, 2016
Test-WSMan alternative, with custom PS Object
View Get-WinRMListener.ps1
$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 / Get-MyAcctGroups.ps1
Created Feb 25, 2016
# Get Groups your account is a member of, via WMI
View Get-MyAcctGroups.ps1
$MyAcctGroups = Get-WmiObject -Query "ASSOCIATORS OF {Win32_Account.Name='$env:username',Domain='$env:USERDOMAIN'} WHERE ResultRole=GroupComponent REsultClass=Win32_Account"
$MyAcctGroups | Get-Member