首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scope vs Runspace vs Session与AppDomain

Scope vs Runspace vs Session与AppDomain
EN

Stack Overflow用户
提问于 2017-01-18 19:41:52
回答 1查看 1.2K关注 0票数 10

我很难在我的头脑中为PowerShell划出界限。我的理解非常有限:

  • 作用域包含用户/脚本定义的变量和函数,可以有带有PS调用堆栈的作用域层次结构。
  • 运行空间指示给定的PS实例可以访问什么内置功能。运行空间可以跨越网络边界。
  • 会话是Powershell的一个特定实例。它们也可以跨越网络边界。
  • 应用程序域(或AppDomain)包含加载的程序集。在许多情况下,一旦数据被加载到AppDomain中,它就不能被卸载。必须对AppDomain进行处理,使其有利于新的。如果通过另一个应用程序调用PS脚本,则创建的PS实例继承调用应用程序的AppDomain。

有人能更好地解释这些概念吗?是不是有某种维恩图或者什么东西能把这些信息充实出来?在线文档对我们的帮助并不大。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-27 20:47:43

考虑这些问题最方便的方法是与列出它们的方式相反:

所有AppDomain实例都由.NET公共语言运行时(.NET)托管在.NET进程中。AppDomain与Windows类似,因为它是一个安全边界。通常,一个应用程序域中的代码不允许直接跨到另一个应用程序域。

是实际创建PowerShell运行时的位置。它提供了一些核心基础设施,例如管道的创建。这是一个.NET对象,它继承父应用程序域。它确实具有远程处理功能,但它们与.NET框架本质上提供的任何东西并没有真正的关系。相反,远程处理功能是由Windows PowerShell产品基础结构提供的。

单个运行空间可以是多个会话的主机。会话实例可以作为纯本地结构存在于本地计算机上,也可以存在于网络的其他地方。当针对远程会话发出命令时,命令本身将发送到远程主机提供程序,并执行该命令,并将整个管道的结果返回给原始请求者。

有几个不同的范围,它们本质上是分层的。有顶级作用域、函数作用域、模块作用域、脚本作用域等。当命名冲突发生在作用域之间时,大多数本地作用域将获胜。作用域还使您能够隐藏数据,这是一个非常有用的功能,如果您正在构建一个模块。任何作用域都可以通过名称以及变量名进行访问。$script:myVar就是一个例子。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41728080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档