Đường ống PowerShell vào lệnh find.exe


8

Chỉ tò mò, tại sao điều này xảy ra? Nếu tôi chạy:

netstat -an | find "443"

vào một dấu nhắc lệnh, các kết nối "443" được hiển thị ok. Nếu tôi chạy cùng một lệnh trong bảng điều khiển PowerShell hoặc ISE, tôi sẽ gặp lỗi "TÌM: Định dạng tham số không chính xác". Là đầu ra netstat không được đặt đúng cách để tìm trong PS?

Lưu ý: Nếu tôi chạy netstat -an | findstr "443"hoặc netstat -an | select-string "443"trong PS, những công việc đó như mong đợi.


trùng lặp giữa các trang web: Tại sao có thể sử dụng không thể tìm thấy các ứng dụng khác trong PowerShell . Có thể tốt hơn để sử dụng select-stringtrong powershell
phuclv

Câu trả lời:


13

PowerShell đánh giá nội dung trong dấu ngoặc kép để thực hiện bất kỳ mở rộng biến, biểu thức con, v.v., sau đó loại bỏ các dấu ngoặc kép đó. Những gì PowerShell trả về từ "443"nghĩa đen 443(lưu ý các trích dẫn còn thiếu). FIND.EXE yêu cầu chuỗi tìm kiếm kèm theo dấu ngoặc kép.

Nếu bạn muốn ngăn PowerShell thoát khỏi dấu ngoặc kép, hãy sử dụng dấu trọng âm (`) để thoát chúng.

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

Bạn cũng có thể sử dụng --%tham số để thực hiện thoát. Yêu cầu PowerShell 3+.

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

Tôi tự hỏi tại sao findstr.exe hoạt động mà không thoát?
Vic

3
@Vic findstrTiện ích không yêu cầu dấu ngoặc kép trong /Ctham số chuỗi: findstr /C:somestring somefilehoạt động như hiện findstr /C:"somestring" somefile. Đối với FIND, dấu ngoặc kép được yêu cầu hiện tại.
jscott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.