我被要求从C#运行以下命令:
stsadm -o gl-copylist -sourceurl "http://someurl" -targeturl "http://someurl" -includeusersecurity -haltonfatalerror -deletesource -includedescendants All –nofilecompression
以下是代码:
ProcessStartInfo startInfo = new ProcessStartInfo()
{
WindowStyle = ProcessWindowStyle.Normal,
FileName = "cmd.exe",
Arguments = "/C " + command,
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true
};
该命令在独立命令窗口中运行正常,但在从我的控制台应用程序运行时始终显示标准的“STSADM -o”帮助文本。
知道为什么吗?
gl-copylist命令是标准SharePoint STSADM命令的加载项。这可能是原因吗?其他标准STSADM命令在我的代码中运行。
答案 0 :(得分:2)
在stsadm
程序集中解析/验证命令行参数的方法中似乎存在错误,特别是当指定了接受值的includedescendants
参数时在另一个参数之前发生以下错误:
命令行错误。
stsadm -o gl-copylist
-sourceurl "http://server/sourceweb/listviewpage"
-targeturl "http://server/targetweb" -includeusersecurity
-haltonfatalerror
-deletesource
-includedescendants All <- when this parameter is specified before another parameter
–nofilecompression
将includedescendants
参数指定为最后一个后,命令将成功执行:
stsadm -o gl-copylist
-sourceurl "http://server/sourceweb/listviewpage"
-targeturl "http://server/targetweb" -includeusersecurity
-haltonfatalerror
-deletesource
–nofilecompression
-includedescendants All