Điểm:0

PowerShell trên Windows: Quá trình bắt đầu không thành công nếu các đối số chuyển hướng đầu ra được sử dụng

lá cờ rs

Tại sao bắt đầu quá trình không tìm thấy tệp thực thi (không có trong đường dẫn) nếu -RedirectStandardOutput hoặc -RedirectStandardError Được xác định?

I E.

[X:\] Start-Process -FilePath "prog.exe" -WorkingDirectory (Get-Location).Path

Chương trình bắt đầu và thực thi như bình thường. Nhưng khi tôi thêm chuyển hướng đầu ra, mọi thứ sẽ sụp đổ:

[X:\] Start-Process -FilePath "prog.exe" -WorkingDirectory (Get-Location).Path -RedirectStandardOutput stdout.txt
Start-Process: Lệnh này không thể chạy được do lỗi: Hệ thống không thể tìm thấy tệp được chỉ định.

Chuyển hướng với 1>stdout.txt nhà điều hành hoạt động như mong đợi.

Điều này dường như không ảnh hưởng đến các chương trình nằm trong các thư mục được liệt kê trong CON ĐƯỜNG. Tôi thực sự không thể tìm ra logic ở đây là gì. Việc chuyển hướng không liên quan gì đến việc giải quyết đường dẫn nhị phân ngay từ đầu.

Chạy trên Windows 10 Professional.

Cập nhật: Dấu vết đầy đủ & bộ sao chép đơn giản

tái bút> con mèo .\hello.c
#include <stdio.h>

int chính(int argc, char** argv)
{
        printf("Meh\n");
        getchar();
        trả về 0;
}

PS> cl xin chào.c
Trình biên dịch tối ưu hóa Microsoft (R) C/C++ Phiên bản 19.29.30138 cho x86
Bản quyền (C) Tập đoàn Microsoft. Đã đăng ký Bản quyền.

chào c
Microsoft (R) Trình liên kết gia tăng Phiên bản 14.29.30138.0
Bản quyền (C) Tập đoàn Microsoft. Đã đăng ký Bản quyền.

/ra:xin chào.exe
xin chào.obj

PS> Start-Process -FilePath hello.exe -WorkingDirectory (Get-Location).Path

PS> Start-Process -FilePath hello.exe -WorkingDirectory (Get-Location).Path -RedirectStandardOutput stdout.txt
Start-Process : Lệnh này không thể chạy được do lỗi: Hệ thống không thể tìm thấy tệp được chỉ định.
Tại dòng:1 ký tự:1
+ Start-Process -FilePath hello.exe -WorkingDirectory (Get-Location).Pa...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

cập nhật 2:

Có vẻ như việc sử dụng đường dẫn tuyệt đối cho tệp thực thi là một cách giải quyết vấn đề. (Mặc dù nó không giải thích tại sao hướng đầu ra phá vỡ độ phân giải tên/đường dẫn thực thi ngay từ đầu)

JosefZ avatar
lá cờ th
Lạ lạ... Đầu ra từ `where.exe "prog.exe"` là gì? Trước và sau ví dụ _running_ (tức là không có bất kỳ tham số `-RedirectStandard` nào)? Có thể `prog.exe` thay đổi `$env:PATH` hoặc ánh xạ ổ đĩa?
lá cờ rs
Đầu ra của chương trình không thực sự quan trọng/có bất kỳ ảnh hưởng nào, vì sự cố xảy ra trong PowerShell, trước khi chương trình được thực thi. Các chương trình tôi đang cố gắng thực thi bằng sơ đồ này đều là các ứng dụng bảng điều khiển Windows không có GUI. Đã cập nhật câu hỏi với trình sao chép tối thiểu.
lá cờ rs
Quên thêm rằng chương trình sẽ chạy là ứng dụng nội bộ của chúng tôi, vì vậy tôi biết nó không sửa đổi `PATH` - trừ khi việc triển khai MSVC CRT thực hiện điều gì đó khó hiểu khi đầu ra được chuyển đổi :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.