Назад | Перейти на главную страницу

Канал PowerShell в команду find.exe

Просто любопытно, почему это происходит? Если я бегу:

netstat -an | find "443"

в командной строке отображается «443» соединений нормально. Если я запускаю ту же команду в консоли PowerShell или ISE, я получаю сообщение об ошибке «НАЙТИ: неверный формат параметра». Вывод netstat не передается должным образом, чтобы найти его в PS?

Примечание: если я бегу netstat -an | findstr "443" или netstat -an | select-string "443" в PS те работают как положено.

PowerShell оценивает содержимое в двойных кавычках для выполнения любого расширения переменных, подвыражений и т. Д., А затем отбрасывает эти двойные кавычки. От чего возвращается PowerShell "443" буквально 443 (обратите внимание на отсутствующие цитаты). FIND.EXE требует строка поиска, заключенная в двойные кавычки.

Если вы хотите, чтобы PowerShell не удалял двойные кавычки, используйте знак ударения (`), чтобы избежать их.

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

Вы также можете использовать --% параметр для выполнения побега. Требуется PowerShell 3+.

nestat -a -n | find --% "443"