是的。

是的。

我的计算机科学教授做了一个测验,其中一个问题是“对还是错:PowerShell 适用于 Windows、Mac 和 Linux”;正确答案是“错”。他坚持认为 PowerShell 只是 Windows 的东西。但以下几个网站却持相反观点:

https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/

https://github.com/PowerShell/PowerShell

那么哪一个是正确的?PowerShell 是否适用于 Linux、Mac 和 Windows?

答案1

是的。

PowerShell 的大部分内容都是 .NET,因此它可以在任何具有公共语言运行时 (CLR) 的操作系统上运行。在 Windows 上,那是 .NET Framework。对于其他操作系统(包括 Linux!),您可以使用核心CLR,.NET Framework 的一个开源、跨平台子集。

正如您在 GitHub 上的 PowerShell 存储库中发现的那样,它支持相当多的操作系统和发行版。例如,以下是 Ubuntu 的说明. 演示 (源页面):

在 Ubuntu 上运行的 PowerShell

有人可能会说全部PowerShell 的某些功能在非 Windows 环境中可用。某些功能依赖于仅在 Windows 上找到的库。例如,返回的类型ParsedHtml上的属性仅在 Windows 上有用,因为它包含来自非托管库的 COM 对象。在其他平台上,那里什么都没有。当然,还有一些仅在 Windows 上找到的用于管理系统的 cmdlet,例如现代应用程序(和朋友)。HtmlWebResponseObjectInvoke-WebRequestmshtml.dllGet-AppxPackage

尽管如此,PowerShell 基础架构在其他操作系统上仍然运行良好。许多 cmdlet 可在任何地方使用,而且支持也越来越好。

答案2

最新的 macos powershell (6 alpha) 具有更好的 .net 支持。但它只适用于 Sierra osx。例如,这现在可以工作了,而以前却不行:

$ping = New-Object System.Net.Networkinformation.ping
$ping.Send('yahoo.com', 500) # timeout 500 ms

[Net.DNS]::GetHostEntry('yahoo.com')   

但是默认控制台颜色很糟糕(命令为黄色等)。

set-psreadlineoption command darkyellow

相关内容