web-dev-qa-db-ja.com

PowerShellはWindows以外のオペレーティングシステムで動作しますか?

私のコンピュータサイエンスの教授がクイズを出しましたが、質問の1つは「正誤問題: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はWindowsだけでなくLinuxとMacでも機能しますか?

7
FredSavage187

はい。

PowerShellの多くは.NETであるため、共通言語ランタイム(CLR)を備えた任意のオペレーティングシステムで実行できます。 Windowsでは、これが.NETFrameworkです。他のオペレーティングシステム(Linuxを含む!)の場合は、.NET Frameworkのオープンソースのクロスプラットフォームサブセットである CoreCLR を使用できます。

GitHubのPowerShellリポジトリにあるように、かなりの数のOSとディストリビューションがサポートされています。たとえば、 buntuの手順は次のとおりです 。デモンストレーション( ソースページ ):

PowerShell working on Ubuntu

Windows以外の環境では、PowerShellのallが利用できるわけではないと主張する人もいるかもしれません。一部の機能は、Windowsでのみ見られるライブラリに依存しています。たとえば、Invoke-WebRequestによって返されるParsedHtmlタイプのHtmlWebResponseObjectプロパティは、アンマネージライブラリ(具体的にはmshtml.dll)からのCOMオブジェクトを保持するため、Windowsでのみ役立ちます。他のプラットフォームでは、そこには何もありません。そしてもちろん、最新のアプリ(Get-AppxPackageやその仲間たち)のように、Windowsでしか見られないシステムを管理するためのコマンドレットもあります。

それでも、PowerShellインフラストラクチャは他のオペレーティングシステムでは完全に正常に機能します。たくさんのコマンドレットがどこでも使用でき、サポートはますます良くなっています。

10
Ben N

Macos(6 alpha)用の最新のPowerShellは、より優れた.netサポートを備えています。ただし、Sierraosxでのみ機能します。たとえば、これは以前は機能しなかった場所で機能するようになりました。

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

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

ただし、デフォルトのコンソールの色はひどいものです(コマンドの場合は黄色など)。

set-psreadlineoption command darkyellow
2
js2010