当我尝试从C#执行wsf脚本时,我收到一个奇怪的错误。我做得对吗?

时间:2017-03-31 17:05:56

标签: wsh

我正在努力解决我在尝试从C#应用程序执行wsf脚本时遇到的这个问题,并希望有人能够解释这个奇怪的错误。

假设我在Windows 2012服务器上。我从命令行运行此命令: C:\ windows \ Syswow64 \ cscript.exe C:\ myscript.wsf // job:Job2

此脚本按预期执行,没有任何问题。因为原因,我必须使用32位的cscript。现在请转到我的C#应用​​程序,它执行以下操作:

processInfo.FileName = "C:\\windows\\Syswow64\\cscript.exe";
processInfo.Arguments = TaskPath + " " + Parameters;
processInfo.WindowStyle = ProcessWindowStyle.Hidden;
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardOutput = true;
processInfo.RedirectStandardError = true;
...
DateTime startTime = DateTime.Now;
StringBuilder output = new StringBuilder();
StringBuilder error = new StringBuilder();
int errorLevel = 0;

using (Process process = Process.Start(processInfo))
{
    using (AutoResetEvent outputWaitHandle = new AutoResetEvent(false))
    using (AutoResetEvent errorWaitHandle = new AutoResetEvent(false))
    {
        process.OutputDataReceived += (sender, e) =>
        {
            if (e.Data == null)
            {
                outputWaitHandle.Set();
            }
            else
            {
                output.AppendLine(e.Data);
            }
        };
        process.ErrorDataReceived += (sender, e) =>
        {
            if (e.Data == null)
            {
                errorWaitHandle.Set();
            }
            else
            {
                error.AppendLine(e.Data);
            }
        };


        process.BeginOutputReadLine();
        process.BeginErrorReadLine();

        process.WaitForExit();
        errorWaitHandle.WaitOne();
        outputWaitHandle.WaitOne();

        errorLevel = process.ExitCode;
    }              
}

我想在此指出,此代码已与我们尝试过的许多其他脚本一起使用。我试着执行这个脚本。 TaskPath =" C:\ myscript.wsf"和参数=" //工作:Job2"。尝试此操作时,我收到以下错误:

C:\ myscript.wsf(100,50)Microsoft VBScript运行时错误:类型不匹配:' CDate'

通常情况下,我认为这必然意味着脚本出现了问题,但是如上所述,脚本在命令行上运行得很好。有什么不同?是否有可能因为脚本是由C#应用程序执行的,它会进行一些奇怪的默认时间本地化?我不太明白差异可能来自哪里,我希望你们可以帮助我;提前致谢! :)

更新 所以我已经能够确定(我认为)C#应用程序与它无关。 C#应用程序在不同于我从命令行运行它的用户下运行。在脚本中没有运行用户特定代码,所以有人可能知道不同用户可能导致错误的原因吗?

0 个答案:

没有答案