Funktioniert PowerShell unter anderen Betriebssystemen als Windows?

7

Mein Informatikprofessor gab ein Quiz und eine der Fragen war "wahr oder falsch: PowerShell funktioniert unter Windows, Mac und Linux". Die richtige Antwort war "falsch". Er behauptet, dass PowerShell nur eine Windows-Sache ist. Aber hier sind ein paar Websites, die etwas anderes sagen:

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

https://github.com/PowerShell/PowerShell

Welches ist also wahr? Funktioniert PowerShell sowohl für Linux und Mac als auch für Windows?

FredSavage187
quelle
2
Ich denke, Sie haben Ihre Antwort bereits mit zuverlässigen Quellen erhalten. Jetzt können Sie möglicherweise nicht viele der Powershell-Cmdlets verwenden, die Sie heute unter Windows unter Mac / Linux kennen und lieben, aber die Powershell-Umgebung läuft unter Max / Linux.
Heavyyd
1
Sieht so aus, als hätten Sie Ihre Nachforschungen angestellt, und es scheint eine gute Gelegenheit für Sie zu sein, durch die Diskussion dieses Themas entweder die Beziehung zu einem Professor zu verbessern oder sie (abhängig von seiner Persönlichkeit) zu
verschlechtern
Powershell basiert hauptsächlich auf Windows, aber technisch gesehen können Sie es zwingen, mit anderen Betriebssystemen zu arbeiten. Sie sind also technisch korrekt.
Bennett Yeo
4
@BennettYeo Powershell wurde buchstäblich auf Linux portiert, technisch gesehen eigentlich nichts
Ramhound

Antworten:

10

Ja.

Ein Großteil von PowerShell ist .NET, sodass es auf jedem Betriebssystem mit Common Language Runtime (CLR) ausgeführt werden kann. Unter Windows ist das .NET Framework. Für andere Betriebssysteme (einschließlich Linux!) Können Sie CoreCLR verwenden , eine plattformübergreifende Open-Source-Teilmenge von .NET Framework.

Wie Sie im PowerShell-Repository auf GitHub gefunden haben, werden einige Betriebssysteme und Distributionen unterstützt. Hier sind zum Beispiel die Anweisungen für Ubuntu . Demonstration ( Quellseite ):

PowerShell arbeitet unter Ubuntu

Man könnte argumentieren, dass nicht alle PowerShell in Nicht-Windows-Umgebungen verfügbar sind. Einige Funktionen hängen von Bibliotheken ab, die nur unter Windows verfügbar sind. Die ParsedHtmlEigenschaft für den HtmlWebResponseObjectvon Invoke-WebRequestbeispielsweise zurückgegebenen Typ ist beispielsweise nur unter Windows nützlich, da sie ein COM-Objekt enthält, das aus einer nicht verwalteten Bibliothek stammt, mshtml.dllum genau zu sein. Auf anderen Plattformen gibt es dort nichts. Und natürlich gibt es Cmdlets zum Verwalten von Systemen, die nur unter Windows verfügbar sind, wie moderne Apps ( Get-AppxPackageund Freunde).

Trotzdem funktioniert die PowerShell-Infrastruktur unter anderen Betriebssystemen einwandfrei. Viele Cmdlets können überall verwendet werden, und die Unterstützung wird immer besser.

Ben N.
quelle
2

Die neueste Powershell für Macos (6 Alpha) bietet eine bessere .net-Unterstützung. Aber es funktioniert nur in Sierra Osx. Zum Beispiel funktioniert dies jetzt wo vorher nicht:

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

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

Die Standardfarben der Konsole sind jedoch schrecklich (gelb für Befehle usw.).

set-psreadlineoption command darkyellow
js2010
quelle