De ce Start-Proces
nu reușește să găsească executabilul (nu în cale) dacă -RedirectStandardOutput
sau -RedirectStandardError
sunt specificate?
i.e.
[X:\] Start-Process -FilePath "prog.exe" -WorkingDirectory (Get-Location).Cale
Programul pornește și se execută așa cum ar trebui. Dar când adaug redirecționarea ieșirii, totul se destramă:
[X:\] Start-Process -FilePath "prog.exe" -WorkingDirectory (Get-Location). Path -RedirectStandardOutput stdout.txt
Start-Process: Această comandă nu poate fi rulată din cauza erorii: Sistemul nu poate găsi fișierul specificat.
Redirecționarea cu 1>stdout.txt
operatorul funcționează conform așteptărilor.
Acest lucru pare să nu afecteze programele care se află în directoarele enumerate în CALE
. Nu pot să-mi dau seama care este logica aici. Redirecționările nu ar trebui să aibă nimic de-a face cu rezolvarea căii binare în primul rând.
Rulează pe Windows 10 Professional.
Actualizați: Urmă completă și reproductor simplu
PS> cat .\hello.c
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Meh\n");
getchar();
returnează 0;
}
PS> cl salut.c
Microsoft (R) C/C++ Optimizing Compiler Versiunea 19.29.30138 pentru x86
Copyright (C) Microsoft Corporation. Toate drepturile rezervate.
buna
Microsoft (R) Incremental Linker Versiunea 14.29.30138.0
Copyright (C) Microsoft Corporation. Toate drepturile rezervate.
/out:hello.exe
salut.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: Această comandă nu poate fi rulată din cauza erorii: Sistemul nu poate găsi fișierul specificat.
La linia:1 char:1
+ Start-Process -FilePath hello.exe -WorkingDirectory (Get-Location).Pa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId: InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
Actualizare 2:
Se pare că utilizarea căii absolute pentru executabil este o soluție pentru problemă. (Deși nu explică de ce direcția de ieșire rupe rezoluția numelui/căii executabilului în primul rând)