PowerShell 5.1、6 和核心之间有什么区别?

What is the difference between PowerShell 5.1, 6, and core?

据我了解,PowerShell 6 和 Core 使用 .Net Core 框架并且是跨平台的,而 PowerShell 5.1 使用 .Net 框架。据我了解,PowersSell Core 也不像 5.1

那样发达

你会推荐我开始学习什么?我还是一名高中生,想在 INFOSEC 工作。我想开始学习 PowerShell 来创建自动编辑设置的脚本。您会建议我从 5.1、6 还是核心开始?有什么资源推荐吗?

随着时间的推移,命名发生了一些变化。一开始,PowerShell 只是 Windows,因为它使用了完整的 .NET Framework。这些是 PowerShell 版本 1.0 到 5.1,现在我们通常称其为“Windows PowerShell”。这个的二进制文件是 powershell.exe.

从PowerShell 6.0开始,该语言使用.NET Core,并成为跨平台的。这个有一个名为 pwshpwsh.exe 的二进制文件。有一段时间,这被称为 PowerShell Core。

从 PowerShell 7 开始,“Core”命名被删除。 “PowerShell”是指这个仍在开发中的跨平台开源版本。

Windows PowerShell 自 5.1 以来未在开发中,除了可能的安全修复。


To my understanding PowersSell Core is also not as developed as 5.1

一般来说是相反的。所有新的发展都发生在所谓的“核心”。

但是当它刚出来的时候,在 Windows 上缺少一些功能,原因有很多:

  • .NET Core 不支持 .NET Framework 支持的所有 Windows 功能
  • 一些功能依赖于闭源,Windows 特定于平台的功能
  • 许多二进制模块(尤其是与 Active Directory 等 Microsoft 产品相关的真正流行的模块)本身是用 .NET Framework 编写的,无法轻松移植,或者依赖于 Windows 产品本身的组件进行操作。

在这方面已经做了很多工作,因此这已成为越来越少的问题。还有一些解决方法,例如使用 PowerShell 从 pwsh 远程处理到 Windows 系统的模块以这种方式执行模块。


至于你应该学什么?两者,尤其是信息安全。

要记住的一件事是 Windows PowerShell 在所有现代 Windows 版本中都是开箱即用的,至少现在,您必须安装其他版本。

但所有新开发、新功能等都真正发生在跨平台版本中。

版本之间的语言本身并没有太大区别,并且应该相当容易理解,只要您在查看文档时留意版本下拉列表即可。