2

私は次のコードを持っています:

let p = new System.Diagnostics.Process();
printfn "installing %A" "installing"
p.StartInfo.FileName <- "powershell.exe";
p.StartInfo.Arguments <- ("/c notepad.exe")
p.StartInfo.RedirectStandardOutput <- true
p.StartInfo.UseShellExecute <- false
p.Start() 
printfn "result ?"
printfn "result %A" (p.StandardOutput.ReadToEnd())
printfn "done"

奇妙なことに、結果が出力される前に、FSIウィンドウでEnterキーを押すのを待っています。

それはおそらく小さなことですが、どうすればこの動作を取り除くことができますか?

これはMSDNで見つかりません。

4

1 に答える 1

1

この動作は、VS の F# インタラクティブ (コードを強調表示して Alt+Enter を押す) でも、"fsi Script.fsx" (Visual Studio 2013 / .NET 4.5.1) を使用してシェルから実行しても見られません。

例外を回避するためにスイッチに "-executionpolicy remotesigned" を追加する必要がありました (通常の PS シェルでは既に設定されています) が、PowerShell プロファイルがない場合、これは発生しない可能性があります。

私が見るものは次のとおりです。

(Notepad opens)
installing "installing"
result ?
(I close notepad)
result ""
done

で次のコードを実行していますfsi Script.fsx。PowerShell ウィンドウと通常の CMD プロンプトの両方から試してみました。

let p = new System.Diagnostics.Process();
printfn "installing %A" "installing"
p.StartInfo.FileName <- "powershell.exe";
p.StartInfo.Arguments <- ("-executionpolicy remotesigned /c notepad.exe")
p.StartInfo.RedirectStandardOutput <- true
p.StartInfo.UseShellExecute <- false
p.Start() 
printfn "result ?"
printfn "result %A" (p.StandardOutput.ReadToEnd())
printfn "done"
于 2013-10-27T14:43:30.457 に答える