C#start.process powershell比原生ps1更长的运行时间

时间:2015-03-28 14:38:05

标签: c# powershell runspace

我使用以下C#代码运行PowerShell脚本,该脚本在C#外部运行时运行一秒钟,但在以下C#代码块中运行超过9秒。 C#代码在同一用户帐户下编译并作为Windows服务运行(通过在PowerShell脚本中输出whoami进行测试。)

string csv = jobpath + requesttype[2] + ".csv";
string id = "123321";
var scriptfile = @"c:\jobrunner\jobrunner.ps1";
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"powershell.exe";
startInfo.Arguments = @"" + scriptfile + " '" + csv + "' " + " '" + id +     "'";
startInfo.RedirectStandardOutput = false;
startInfo.RedirectStandardError = false;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();

PowerShell脚本从如下文件夹中加载函数:

$date = get-date
"start $date" >> C:\temp\_log.log
$psdir="c:\Jobrunner\functions"  
# load all 'autoload' scripts
Get-ChildItem "${psdir}\*.ps1" | %{.$_} 
$date = get-date 
"end $date" >> C:\temp\_log.log

有没有人能指出我在C#中执行脚本时为何如此慢的方向?

结果:(首先从c#开始原生第二次)

start 03/28/2015 16:05:13 - end 03/28/2015 16:05:13 

start 03/28/2015 16:05:32- end 03/28/2015 16:05:41

使用时,性能得到了更好的分析:

startInfo.FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe";

我注意到派生的powershell.exe有* 32首次尝试C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0但实际上是32位且system32中的powershell.exe是64位?

现在差异是:0.5秒vs 1.1秒

真正感谢任何进一步的表现助推器

0 个答案:

没有答案