重定向C#进程输出

| 我正在研究一个项目,该项目将查询在其他系统上运行的计划任务。我编写了一个控制台应用程序,该应用程序运行schtasks并将输出重定向到文本文件。但是,我想知道是否可以将此输出重定向到SQL数据库? 我当时正在考虑编写一个存储过程,该存储过程将处理所有插入操作,但是我不知道该如何处理控制台应用程序中的数据。我已经有一个存储的proc,它将XML和文本数据重定向到我过去创建的数据库,但是我试图不让文件到处都是。 任何输入都会很棒。这是我的代码,以防有人想看到它:
Process process = new Process();
process.StartInfo.FileName = \"C:\\\\Windows\\\\System32\\\\schtasks.exe\";
process.StartInfo.Arguments = \"/query /s 192.168.0.124\";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();

string procOutput = process.StandardOutput.ReadToEnd();
下面仅是使用文本编写器重定向到文本文件的方法。     
已邀请:
是的,可以利用
for
和sqlcmd变量在一行中:
for /F \"skip=1 delims=, tokens=1,2,3*\" %i in (\'schtasks.exe /query /FO CSV /s <server>\') do sqlcmd -E -S <dbserver> -d <db> -Q \"insert into <table> (TaskName, NextRun, Status) values (\'$(TaskName)\', \'$(NextRun)\', \'$(Status)\');\" /v TaskName=%i /v NextRun=%j /v Status=%k
    
我要编写一个Web服务,这个小程序会调用该Web服务将其信息发布到该服务。使该Web服务将结果写入数据库,并公开该服务中的方法以取回信息。使用大多数程序员都熟悉的一组技术可使维护更加容易。 唯一的问题是,您的控制台应用程序将如何执行? 将控制台应用程序转换为Windows服务值得吗?让它监听传入的请求以执行其任务。 WCF非常适合处理此类任务。 你怎么看? WCF登陆页面 如何:在托管Windows服务中托管WCF服务 您需要与网络人员联系,以确保您的Web服务器可以打开与安装了wcf服务的目标计算机的连接。     
如果程序很小,将在受信任的机器上运行,只需使用SqlConnection(或与rdmbs等效的连接)创建命令,然后将procOutput作为参数执行即可。像这样:
var connection = new System.Data.SqlClient.SqlConnection(connection);
            var command = connection.CreateCommand();
            command.CommandText = \"procedureName\";
            command.Parameters.Add(new System.Data.SqlClient.SqlParameter(\"paramName\", \"output\"));
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.ExecuteNonQuery();
    
当然。懒惰的方法是: 像现在一样重定向它。 在这里您可以从标准输出和标准错误中读取内容,而不必直接写入文本文件,而应使用log4net。 使用SQL附加程序配置log4net以捕获您编写的日志消息。 如果愿意,还可以配置滚动文件追加程序,以便将日志消息也写入日志文件。 您可以看中并添加事件日志追加程序,以便将标准错误写入事件日志,以便操作人员可以连接警报。 我喜欢以这种方式使用log4net,因为它使生产批处理工作变得简单。我可以获得正常的控制台输出,而同时又将其捕获到文本文件,sql数据库或Windows事件日志中。使操作人员感到高兴。     

要回复问题请先登录注册