Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ASP.Net进程调用Powershell可以吗_Asp.net_Powershell - Fatal编程技术网

从ASP.Net进程调用Powershell可以吗

从ASP.Net进程调用Powershell可以吗,asp.net,powershell,Asp.net,Powershell,在asp.net应用程序中创建powershell运行空间并运行命令是否存在任何问题 我有一个基本的例子工作得很好,但我想知道是否有任何陷阱等着我 我特别想知道: 这是一个轻量级的进程内操作,还是启动了另一个可能导致不可预测行为的进程 这应该没问题。我没有在ASP.NET中这样做,但我已经用一个桌面应用程序在进程中进行了托管。除非使用后台作业,否则不会启动外部PowerShell进程。我想任务组的人也在用他们的电脑做类似的事情。这应该没问题。我没有在ASP.NET中这样做,但我已经用一个桌面应

在asp.net应用程序中创建powershell运行空间并运行命令是否存在任何问题

我有一个基本的例子工作得很好,但我想知道是否有任何陷阱等着我

我特别想知道:

  • 这是一个轻量级的进程内操作,还是启动了另一个可能导致不可预测行为的进程

    • 这应该没问题。我没有在ASP.NET中这样做,但我已经用一个桌面应用程序在进程中进行了托管。除非使用后台作业,否则不会启动外部PowerShell进程。我想任务组的人也在用他们的电脑做类似的事情。

      这应该没问题。我没有在ASP.NET中这样做,但我已经用一个桌面应用程序在进程中进行了托管。除非使用后台作业,否则不会启动外部PowerShell进程。我认为Quest人员也在用他们的。

      做类似的事情。只要你不是直接使用powershell.exe,而是直接使用
      运行空间
      管道
      对象,你就可以确信它相当轻量级。顺便说一句,如果您试图通过C#与cmdlet交互,则只有从
      PSCmdlet
      派生的cmdlet需要管道;直接从
      Cmdlet
      派生的函数可以通过Invoke方法在没有管道的情况下调用。这是最轻量级的方法。

      只要您没有显式地使用powershell.exe,而是直接使用
      Runspace
      Pipeline
      对象,就可以确保它相当轻量级。顺便说一句,如果您试图通过C#与cmdlet交互,则只有从
      PSCmdlet
      派生的cmdlet需要管道;直接从
      Cmdlet
      派生的函数可以通过Invoke方法在没有管道的情况下调用。这是最轻量级的方法。

      正如我所见,其他人建议使用PowerShell。嗯,就我个人而言,我会更加关注。为什么?

      每个web请求都应尽可能快地得到处理,并且不会出现任何阻塞。如果脚本包含可用于网络的命令,则可能会出现一些超时(例如,如果无法访问计算机)。处理线程将一直被阻止,无法处理任何其他web请求。然后很快您可能会得到内部服务器错误和类似的响应

      除此之外(未经证实),我怀疑PowerShell比C#中的类似代码消耗更多内存


      我并不是说不要使用Powershell,请注意;)

      如我所见,其他人建议使用PowerShell。嗯,就我个人而言,我会更加关注。为什么?

      每个web请求都应尽可能快地得到处理,并且不会出现任何阻塞。如果脚本包含可用于网络的命令,则可能会出现一些超时(例如,如果无法访问计算机)。处理线程将一直被阻止,无法处理任何其他web请求。然后很快您可能会得到内部服务器错误和类似的响应

      除此之外(未经证实),我怀疑PowerShell比C#中的类似代码消耗更多内存


      我并不是说不要使用Powershell,请注意;)

      谢谢@stej。都是好的。不幸的是,运行powershell命令似乎是执行我希望执行的操作的唯一“受支持”的方法。我考虑过的另一种选择是将web请求添加到队列中,以便在windows服务中将powershell称为async。不幸的是,用户将等待响应,因此在我们的示例中,唯一的优势是更早地释放web服务器线程,并使用ajax轮询结果。谢谢@stej。都是好的。不幸的是,运行powershell命令似乎是执行我希望执行的操作的唯一“受支持”的方法。我考虑过的另一种选择是将web请求添加到队列中,以便在windows服务中将powershell称为async。不幸的是,用户将等待响应,因此在我们的示例中,唯一的优势是更早地释放web服务器线程,并使用ajax轮询结果。