2.4.0 - 2025-12-22
Invoke-Member (aka ivm) (#55)
Quality of life command that makes interactive invocation of reflection info easier.
No need to save instances to an intermediate variable, Find-Member will attach a hidden ETS property to its output.
[WildcardPattern]'c*' | Find-Member -Force PatternConvertedToRegex | Invoke-Member
# returns:
# ^cThe source object will remain tracked between chained Find-Member commands, but not subsequent invocations (for the engine nerds, the PSObject does not register itself to the member resurrection table).
using namespace System.Runtime.InteropServices
# very contrived example
$message = 'testing'
$chars = [Marshal]::AllocHGlobal($message.Length * 2)
[Marshal]::Copy($message.ToCharArray(), 0, $chars, $message.Length)
$encoder = [System.Text.Encoding]::UTF8.GetEncoder()
$bytes = [Marshal]::AllocHGlobal(0x200)
# arbitrarily make it a string to show conversion
$charLength = [string]$message.Length
$encoder | Find-Member Convert -ParameterType { [char+] } | % DisplayString
# returns:
# public override void Convert(char* chars, int charCount, byte* bytes, int byteCount, bool flush, out int charsUsed, out int bytesUsed, out bool completed);
$encoder |
Find-Member Convert -ParameterType { [char+] } |
Invoke-Member $chars $charLength $bytes 0x200 $true
# charsUsed bytesUsed completed
# --------- --------- ---------
# 7 7 TrueGet-AssemblyLoadContext (aka galc) (#55)
A way to interact with and explore ALCs via ClassExplorer.
Get-AssemblyLoadContext
# Definition ImplementingType Assemblies
# ---------- ---------------- ----------
# Default System.Runtime.Loader.DefaultAssemblyLoadCon… 152 assemblies (System.Private.CoreLib, pwsh, …
# <Unnamed> PowerShellRun.CustomAssemblyLoadContext 0 assemblies
# Yayaml Yayaml.LoadContext 2 assemblies (Yayaml.Module, YamlDotNet)
[ref] | Get-AssemblyLoadContext
# Definition ImplementingType Assemblies
# ---------- ---------------- ----------
# Default System.Runtime.Loader.DefaultAssemblyLoadCon… 152 assemblies (System.Private.CoreLib, pwsh, …
Get-AssemblyLoadContext Yayaml | Find-Type | select -First 5
# Namespace: Yayaml.Module
#
# Access Modifiers Name
# ------ --------- ----
# public sealed class AddYamlFormatCommand : PSCmdlet
# public sealed class ConvertFromYamlCommand : PSCmdlet
# public sealed class ConvertToYamlCommand : PSCmdlet
# public sealed class NewYamlSchemaCommand : PSCmdlet
# public class YamlSchemaCompletionsAttribute : ArgumentCompletionsAttribute2.3.3 - 2022-05-03
- Add
-DecorationtoFind-Typeand fix it being unreliable with non-BCL attributes (#44)
2.3.2 - 2022-05-02
- Add property attributes in
Format-MemberSignature(#39) - Add argument completion for
-Decoration(#40) - Fix type for
ResolutionMapin help (#41)
2.3.1 - 2022-05-01
- Fix
numberkeyword not resolving and add help forhasdefaultkeyword (#38)
2.3.0 - 2022-05-01
2.2.0 - 2022-04-30
Add -RecurseNestedType parameter (#31)
A lot of queries were a little harder with automatically recursing nested types. So, you could do something like:
Find-Type -Not -Base delegate | Find-Member -Not -Virtual | Find-Member InvokeAnd end up with a bunch of members from nested delegates. This also lets you filter nested types easier. Basically, we are just actually treating nested types like other members unless you specifically request otherwise.
- Filter sealed and abstract methods from virtual (#29)
- Fix filters applying incorrectly with not or pipe (#30)
- Add some extra aliases and update docs (#32)
2.1.0 - 2022-04-30
- Some methods show as virtual when they are not (#21)
- Group
Find-Memberformatting by full name (#22) - Process
paramsin member signature format (#23) - Exclude ValueType and Enum implementations (#25)
- Fix access check for
Find-Typewith-Not(#26) - Add keywords
abstractandconcrete(#27) - Update manifest for 2.1.0 (#28)
2.0.1 - 2022-04-25
- Minor docs and exception message update.
2.0.0 - 2022-04-24
BREAKING CHANGE: The Find-Namespace cmdlet has been removed.
This feature allows for very easily handling of generic types, something that was sorely lacking previously. There's a significant number of additional queries to play with, check out about_Type_Signatures.help.md for more info.
Find-Member -ParameterType { [ReadOnlySpan[any]] }Finds members that take a ReadOnlySpan<> as a parameter regardless of generic argument.
Find-Member -ReturnType { [generic[anyof[Span`1, ReadOnlySpan`1], args[TM]]] } -ParameterType { [anyref] [any] }Finds members that take any form of ref (including out and in) and return either a Span<> or a ReadOnlySpan<> whose generic argument is a generic method type parameter.
Every object returned by included commands feature new formatting with syntax highlighting. Also includes formatting for PSMethod (e.g. overload definitions):
Provides a "metadata reference" style view for reflection objects.
Any parameter that takes a string now uses "smart casing". If the value is all lower case, the search will be case insensitive and switches to case sensitive only when a upper case character is present.
Find-Type *ast*Find-Type *Ast*Some new parameters like Find-Member's -ParameterCount take a new type of expression that represents a range.
Find-Member -ParameterCount 20..Finds all methods with 20 or more parameters.
- A lot of new parameters and parameter aliases
- Results are properly streamed rather than dumped all at once
- Included cmdlet aliases
-Notworks reliably- Slightly faster
- Many fixes
1.1.0 - 2018-01-07
Added the Find-Namespace cmdlet for searching the AppDomain for specific namespaces. This is
paticularly useful when exploring a new assembly to get a quick idea what's available. The namespace
objects returned from this cmdlet can be piped into Find-Type or Find-Member.
For examples and usage, see the Find-Namespace help page.
Namespace parameters for Find-Namespace and Find-Type now have tab completion. The Name parameter
for Get-Assembly will now also complete assembly names.
The cmdlets Find-Namespace, Find-Type, and Find-Member now have a Not parameter to negate the
search criteria. This makes chaining the commands to filter results a lot easier. Here's a basic example.
Find-Namespace Automation | Find-Member -Static | Find-Member -MemberType Field -Not-
The
Find-*cmdlets no longer return all matches in the AppDomain if passed null pipeline input -
Added support for explicitly specifying the
InputObjectparameter from pipeline position 0 -
Find-Typeno longer throws when theNamespaceparameter is specified with theRegularExpressionswitch parameter -
Various build and test fixes
1.0.1 - 2017-08-28
- Fix positional binding of
FilterScriptforFind-MemberandFind-Type.
1.0.0 - 2017-08-26
Initial Release









