我正在從C#調用Powershell來收集一些信息並使用Out-File將其發送到文本文件。然後我需要讀取上述文件中的行,並使用C#中的數據進行操作。從Powershell寫入文件,然後從C#中讀取文件
string MyCommand = "-Command &{ get-process | Out-File C:\\MyFile.txt}";
ProcessStartInfo MyProcInfo = new ProcessStartInfo();
MyProcInfo.FileName = "powershell.exe";
MyProcInfo.Arguments = MyCommand;
Process MyProcess = new Process();
MyProcess.StartInfo = MyProcInfo;
MyProcess.Start();
MyProcess.WaitForExit();
try
{
var lines = File.ReadLines(@"C:\MyFile.txt");
(etc)
}
catch (Exception Ex)
{
MessageBox.Show(Ex.ToString());
}
因此,當它試圖打開文本文件,我得到一個
「找不到文件」
例外。每次都會寫入文件IS,所以我假設有一個計時事件正在進行,這就是爲什麼我使用WaitForExit
。但它仍然無法'找到'文件。
你確定你要'C寫訪問:'和文件寫?由於直接寫入'C:'時引發的'UnauthorizedAccessException',我對此表示懷疑。使用'MyProcInfo.UseShellExecute = false; MyProcInfo.RedirectStandardOutput = true;',然後將該輸出重定向到'string'並查看問題出在哪裏。包含'MyProcess.StandardOutput.ReadLine();'的while(!MyProcess.StandardOutput.EndOfStream)'應該有效。 – jAC
請注意:Powershell方面正在工作。該文件確實被寫入......我實際上每次都要手動刪除它來測試。所以我有寫入權限到C:\。當我到達File.ReadLines時遇到問題。那是當我得到文件沒有找到 – PSNewb
@wOxxOm如果你不打算做替換,你應該實際使用單引號字符串文字。 – TheIncorrigible1