从ASP.Net进程调用Powershell可以吗
在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进程。我认为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轮询结果。