Seu problema tem algo a ver com $InstanceID tipo (tente $InstanceID.Gettype() em seu script). O próximo snippet de código pode ajudar:
$InstanceIDs = -split $(
Get-NetFirewallPortFilter |
Where { $_.LocalPort -Eq "RPC" } |
Format-Table -Property InstanceID -HideTableHeaders |
Out-String
)
Show-NetFirewallRule |
Where { $_.InstanceID –In $InstanceIDs} |
ForEach-Object {
if ($_.Name) {
"{0} {1} {2}" -f $_.Name, '==', $_.DisplayName
}
}
Observe que $InstanceIDs é uma matriz de strings no snippet de código acima; Além disso, a propriedade $_.Name em Show-NetFirewallRule corresponde a InstanceID one em Get-NetFirewallPortFilter .