pipe PowerShell no comando find.exe

7

Apenas curioso, por que isso acontece? Se eu correr:

netstat -an | find "443"

em um prompt de comando, as conexões "443" são exibidas ok. Se eu executar o mesmo comando em um console do PowerShell ou no ISE, recebo o erro "FIND: o formato do parâmetro não está correto". A saída netstat não está sendo canalizada corretamente para encontrar no PS?

Nota: Se eu executar netstat -an | findstr "443" ou netstat -an | select-string "443" em PS, trabalhe como esperado.

    
por Vic 19.02.2016 / 00:57

1 resposta

11

O PowerShell avalia o conteúdo entre aspas duplas para executar qualquer expansão de variável, subexpressões, etc., e descarta essas aspas duplas. O que o PowerShell retorna de "443" é literalmente 443 (observe as aspas faltantes). FIND.EXE requer a string de pesquisa entre aspas duplas.

Se você quiser impedir que o PowerShell descarte as aspas duplas, use o acento grave (') para escapar deles.

netstat -a -n  | find '"443'"

Você também pode usar as --% parâmetro para realizar o escape. Requer PowerShell 3 +.

nestat -a -n | find --% "443"
    
por 19.02.2016 / 03:47

Tags