1

我收到此错误: 无法处理输入:参数“C:\test.xml”必须以 / 或 - 开头(HRESULT=80070057)。

我正在尝试使用 appcmd 导出我的 IIS 网站,但我无法在 C# 中使用此命令,但如果我在 cmd.exe 中复制过去的手册,它就可以工作。“列出站点/config /xml > C:\test.xml”,我也尝试过“列出站点/config /xml > C:/test.xml”。

var pro2 = new Process();
                pro2.StartInfo.FileName = "C:\Windows\System32\inetsrv\appcmd.exe";
                pro2.StartInfo.Arguments = "list site /config /xml > C:/test.xml";
                pro2.StartInfo.CreateNoWindow = true;
                pro2.StartInfo.UseShellExecute = false;
                pro2.StartInfo.LoadUserProfile = true;
                pro2.StartInfo.RedirectStandardOutput = true;
                pro2.Start();
                EventLog.WriteEntry(pro2.StandardOutput.ReadToEnd());
                pro2.WaitForExit();
                pro2.Close();

我做错了什么?

4

2 回答 2

0

C# 中的转义字符,特别是“\”。

使用双反斜杠或@。

于 2014-02-17T19:43:44.430 回答
0

一方面,您试图将标准输出重定向到两个地方 (test.xmlpro2.StandardOutput) 而没有tee。里面不会有任何东西pro2.StandardOutput

其次,Appcmd.exe 不处理重定向参数>,但 cmd.exe 可以。这就是您可以在 cmd.exe 提示符下运行它的原因。例如,这适用于 Powershell:

Start-Process cmd.exe -Verb RunAs -ArgumentList "/c","c:\windows\system32\inetsrv\appcmd.exe","list site /config /xml", ">" , "c:\temp\test.xml"

cmd.exe它正在向进程发送一个包含 5 个参数的字符串数组。将该行翻译成 C# 应该很容易。-Verb RunAs如果您在提升的会话中运行,或者您具有读取权限,则可以省略。

于 2021-06-14T22:58:43.610 回答