@@ -4560,51 +4560,64 @@ function Get-RpcEndpoint {
45604560 Param (
45614561 [parameter (Mandatory , Position = 0 , ParameterSetName = " FromId" )]
45624562 [parameter (Mandatory , Position = 0 , ParameterSetName = " FromIdAndVersion" )]
4563- [string ]$InterfaceId ,
4563+ [Guid ]$InterfaceId ,
45644564 [parameter (Mandatory , Position = 1 , ParameterSetName = " FromIdAndVersion" )]
45654565 [Version ]$InterfaceVersion ,
4566- [parameter (Mandatory , Position = 0 , ParameterSetName = " FromServer" , ValueFromPipeline )]
4566+ [parameter (Mandatory , ParameterSetName = " FromServer" , ValueFromPipeline )]
45674567 [NtApiDotNet.Ndr.NdrRpcServerInterface ]$Server ,
45684568 [parameter (Mandatory , ParameterSetName = " FromBinding" )]
45694569 [string ]$Binding ,
45704570 [parameter (Mandatory , ParameterSetName = " FromAlpc" )]
45714571 [string ]$AlpcPort ,
45724572 [parameter (ParameterSetName = " FromIdAndVersion" )]
45734573 [parameter (ParameterSetName = " FromServer" )]
4574- [switch ]$FindAlpcPort
4574+ [switch ]$FindAlpcPort ,
4575+ [parameter (ParameterSetName = " All" )]
4576+ [parameter (ParameterSetName = " FromId" )]
4577+ [parameter (ParameterSetName = " FromIdAndVersion" )]
4578+ [string ]$SearchBinding = " " ,
4579+ [parameter (ParameterSetName = " All" )]
4580+ [parameter (ParameterSetName = " FromId" )]
4581+ [parameter (ParameterSetName = " FromIdAndVersion" )]
4582+ [string []]$ProtocolSequence = @ ()
45754583 )
45764584
45774585 PROCESS {
4578- switch ($PsCmdlet.ParameterSetName ) {
4586+ $eps = switch ($PsCmdlet.ParameterSetName ) {
45794587 " All" {
4580- [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints() | Write-Output
4588+ [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints($SearchBinding )
45814589 }
45824590 " FromId" {
4583- [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints($InterfaceId ) | Write-Output
4591+ [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints($SearchBinding , $ InterfaceId )
45844592 }
45854593 " FromIdAndVersion" {
45864594 if ($FindAlpcPort ) {
4587- [NtApiDotNet.Win32.RpcEndpointMapper ]::FindAlpcEndpointForInterface($InterfaceId , $InterfaceVersion ) | Write-Output
4595+ [NtApiDotNet.Win32.RpcEndpointMapper ]::FindAlpcEndpointForInterface($InterfaceId , $InterfaceVersion )
45884596 }
45894597 else {
4590- [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints($InterfaceId , $InterfaceVersion ) | Write-Output
4598+ [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints($SearchBinding , $ InterfaceId, $InterfaceVersion )
45914599 }
45924600 }
45934601 " FromServer" {
45944602 if ($FindAlpcPort ) {
4595- [NtApiDotNet.Win32.RpcEndpointMapper ]::FindAlpcEndpointForInterface($Server.InterfaceId , $Server.InterfaceVersion ) | Write-Output
4603+ [NtApiDotNet.Win32.RpcEndpointMapper ]::FindAlpcEndpointForInterface($Server.InterfaceId , $Server.InterfaceVersion )
45964604 }
45974605 else {
4598- [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints($Server ) | Write-Output
4606+ [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpoints($Server )
45994607 }
46004608 }
46014609 " FromBinding" {
4602- [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpointsForBinding($Binding ) | Write-Output
4610+ [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpointsForBinding($Binding )
46034611 }
46044612 " FromAlpc" {
4605- [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpointsForAlpcPort($AlpcPort ) | Write-Output
4613+ [NtApiDotNet.Win32.RpcEndpointMapper ]::QueryEndpointsForAlpcPort($AlpcPort )
46064614 }
46074615 }
4616+
4617+ if ($ProtocolSequence.Count -gt 0 ) {
4618+ $eps = $eps | Where-Object {$_.ProtocolSequence -in $ProtocolSequence }
4619+ }
4620+ $eps | Write-Output
46084621 }
46094622}
46104623
0 commit comments