[Powershell]::create()
-方法在“当前或新运行空间”中创建一个新的PowerShell-“ Instance”。
有人可以解释一下过程,实例,运行空间和(也许是线程)这两个术语之间的关系其他方面。 用外行的话说吧?
答案 0 :(得分:1)
您拥有的术语不能互换,并且不能做相同的事情。
进程是运行指令集的程序。
线程是程序中的一条指令。
多线程是指同时运行多条指令。每个都需要一个单独的线程。
Runspace在同一Powershell进程中,但是调用新的Powershell引擎以便在不干扰当前Powershell脚本线程的情况下运行其代码。
实例是一个包含的运行代码。它是一个描述符。
所以这是一些例子
我可以有一个流程实例。 我可以有一个线程实例。 我可以有一个Runspance的实例。
进行编辑以扩展基于评论的答案
“因此,在上面发布的示例ive中,[[Powershell] :: create())是线程,进程或运行空间的实例吗?”
因此,我们有一个Powershell应用程序。发生的情况是此应用程序启动了一个运行空间,在该空间中将执行您的命令,并设置一个位置来创建Powershell对象。每次打开Powershell控制台时,您都在启动另一个运行空间。
[Powershell]::create()
创建一个对象,您可以在其中确定要运行的对象以及将在其上运行的运行空间。如果您不选择运行空间,那么它将为您创建一个运行空间。
所以[Powershell]是将运行什么?(脚本)和它将在哪里运行(运行空间)
运行空间是它将如何运行?(在Powershell引擎上)
答案 1 :(得分:1)
您可以将[Powershell] :: Create()视为单独线程上的新Powershell会话。该会话将创建一些默认运行空间,但是您可以将其更改为另一个运行空间。与Start-Process(单独的进程)和Start-Job(子进程)不同,[Powershell] :: Create()与您的主脚本在同一进程上运行,并与其共享内存空间。这意味着您可以在主会话和子会话之间交换实际的.net对象。如果会话在单独的进程上运行,则只能与文本/序列化数据交换。