【问题标题】:Process vs Instance vs Runspace in PowerShellPowerShell 中的进程、实例和运行空间
【发布时间】:2019-02-03 13:12:20
【问题描述】:

[Powershell]::create() - 方法在“当前或新运行空间”中创建一个新的 PowerShell-“Instance”。

谁能解释一下processinstancerunspace和(可能是thread)这三个术语之间的关系其他在这方面。 如果可能的话,通俗地说?

【问题讨论】:

    标签: .net powershell process instance runspace


    【解决方案1】:

    您可以将 [Powershell]::Create() 视为单独线程上的新 powershell 会话。此会话将创建一些默认运行空间,但您可以将其更改为另一个。与 Start-Process(单独的进程)和 Start-Job(子进程)不同,[Powershell]::Create() 与您的主脚本在同一个进程上运行并与其共享内存空间。这意味着您可以在主会话和子会话之间交换实际的 .net 对象。如果会话在单独的进程上运行,它们只能与文本/序列化数据交换。

    【讨论】:

      【解决方案2】:

      您拥有的术语不可互换,并且不做同样的事情。

      进程是运行指令集的程序。

      线程是程序中单条指令的运行。

      多线程是指同时运行多条指令。每个都需要一个单独的线程。

      Runspace 在同一个 powershell 进程中,但调用了一个新的 powershell 引擎,以便在不干扰当前 powershell 脚本线程的情况下运行其代码。

      实例是包含运行的代码。它是一个描述符。

      所以这里有一些例子

      我可以有一个进程的实例。 我可以有一个线程的实例。 我可以有一个 Runspance 的实例。

      编辑以根据评论扩展答案

      “那么在我上面发布的示例中([Powershell]::create()),它是线程、进程还是运行空间的实例?”

      所以我们有一个 Powershell 应用程序。正在发生的事情是这个应用程序启动了一个运行空间,您的命令将在其中执行并设置一个位置来创建 Powershell 对象。每次打开 powershell 控制台时,您都在启动另一个运行空间。

      [Powershell]::create() 它创建一个对象,您可以在其中确定将运行什么以及它将在哪个运行空间上运行。如果您不选择运行空间,那么它会为您创建一个。

      所以 [Powershell] 是 What will run?(脚本)和 它将在哪里运行(运行空间)

      运行空间是 它将如何运行?(在 powershell 引擎上)

      【讨论】:

      • 谢谢。那么在我上面发布的示例中([Powershell]::create()),它是线程、进程还是运行空间的实例?
      • 希望对您有所帮助
      猜你喜欢
      • 2019-10-31
      • 1970-01-01
      • 2012-07-29
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2010-11-14
      • 2015-11-17
      相关资源
      最近更新 更多