首页 > 解决方案 > 从由 system.io.file.readalltext() 读取的 Poweshell 脚本创建一个有效的系统路径

问题描述

我正在创建一个将运行 PowerShell 脚本并在网页上提供结果的 asp 网站。

我现在的问题是,我有一个脚本返回日志文件的完整路径。我将这个返回的路径传递给 System.IO.File.ReadAllText()。但是我在运行时遇到了无效字符异常。

例子:

ABC.PS1

param(
    [String]$computer
)
$Logfile = "C:\Scripts\ABC_$($computer)_$(Get-Date -f "dd-MM-yyy_hh-mm-ss").log"
$Logfile | Out-String

.aspx.cs

using (PowerShell PowerShellInstance = PowerShell.Create())
        {
            PowerShellInstance.AddCommand(@"C:\Scripts\ABC.ps1");
            PowerShellInstance.Commands.AddParameter("computer", ServerNameTB.Text);
            var results = PowerShellInstance.Invoke();
            if (results.Count > 0)
            {
                var builder = new StringBuilder();
                foreach (var psObject in results)
                {
                    builder.Append(psObject.BaseObject.ToString());
                }
                String resultPath = builder.ToString();
                //Exception invalid characters
                diskCeanUpResult.Text = System.IO.File.ReadAllText(resultPath); 
                }
            }

如何转换返回的路径,以便 File.ReadAllText() 可以访问它

标签: c#asp.netpowershell

解决方案


通过添加解决了该问题.TrimEnd('\r', '\n')

String resultPath = builder.ToString().TrimEnd('\r', '\n');
diskCeanUpResult.Text = System.IO.File.ReadAllText(resultPath);

推荐阅读