我有一个相当简单的过程,我调用一个PowerShell窗口,其中包含一些用于测试Active Directory复制的参数。 如下所示,我隐藏了这个窗口并将结果的输出重定向到resultsStorage变量:
Try
Dim sCommand As String = "powershell.exe"
sArgs = "dcdiag /test:replications; repadmin /showrepl; repadmin /replsummary /errorsonly /sort:failures"
Dim psi As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo(sCommand, sArgs)
psi.UseShellExecute = False
psi.CreateNoWindow = True
psi.RedirectStandardOutput = True
psi.RedirectStandardError = True
Dim proc As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi)
Dim errorResults As String = proc.StandardError.ReadToEnd
If errorResults <> "" Then
resultsStorage = errorResults
Else
resultsStorage = proc.StandardOutput.ReadToEnd
End If
Catch ex As Exception
resultsStorage = "An error was encountered running replication test(s):" & vbNewLine & ex.ToString
End Try
这在大多数情况下都很有效。但是,在某些情况下,使用上述参数进行复制测试可能需要很长时间。 (10分钟以上) 在这种情况下我注意到什么都不会被归还。 排除这个具体的论点,我已经尝试了几个不同的论点,我注意到几乎任何需要任何实际时间长度的论证都不会返回一个值。 process.start等待的时间量是否有限制? 关于如何改进这个的任何建议?