Работает ли PowerShell в операционных системах, отличных от Windows?

мой профессор информатики дал тест, и один из вопросов был "true или false: PowerShell работает в Windows, Mac и Linux"; правильный ответ был " false."Он утверждает, что 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?

23
задан Ben N
05.01.2023 9:59 Количество просмотров материала 2816
Распечатать страницу

2 ответа

да.

большая часть PowerShell является .NET, поэтому он может работать в любой операционной системе, имеющей среду CLR. В Windows, это .Чистые рамки. Для других операционных систем (включая Linux!), вы можете использовать CoreCLR, кросс-платформенное подмножество .NET Framework с открытым исходным кодом.

как вы нашли в хранилище PowerShell на Гитхабе, немало ОС и дистрибутивы поддерживаются. Например, здесь инструкции для Ubuntu. Демонстрация (источник):

PowerShell working on Ubuntu

можно утверждать, что не все из PowerShell доступен в среде Windows. Некоторые функции зависят от библиотек, доступных только в Windows. The ParsedHtml собственности на HtmlWebResponseObject тип возвращаемого Invoke-WebRequest, например, полезно только на Windows, потому что он содержит COM-объект, который приходит из неуправляемой библиотеки,mshtml.dll чтобы быть точным. На других платформах, там ничего нет. И, конечно же, есть командлеты для управления системами только в Windows, как современные приложения (Get-AppxPackage и друзей).

тем не менее, инфраструктура PowerShell прекрасно работает в других операционных системах. Множество командлетов можно использовать где угодно, а поддержка только улучшается.

10
отвечен Ben N 2023-01-06 17:47

последняя powershell для macos (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
3
отвечен js2010 2023-01-06 20:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх