O PowerShell funciona em sistemas operacionais diferentes do Windows?

7

Meu professor de Ciência da Computação fez um teste e uma das perguntas era "verdadeira ou falsa: o PowerShell funciona em Windows, Mac e Linux"; a resposta correta era "falsa". Ele afirma que o PowerShell é apenas uma coisa do Windows. Mas aqui estão alguns sites que dizem o contrário:

link

link

Então qual é a verdade? O PowerShell funciona para Linux e Mac, bem como para o Windows?

    
por FredSavage187 03.05.2017 / 22:44

2 respostas

10

Sim.

Grande parte do PowerShell é .NET, portanto, ele pode ser executado em qualquer sistema operacional que tenha o Common Language Runtime (CLR). No Windows, esse é o .NET Framework. Para outros sistemas operacionais (incluindo o Linux!), Você pode usar o CoreCLR , um subconjunto de código aberto e plataforma cruzada do. NET Framework.

Como você encontrou no repositório do PowerShell no GitHub, vários sistemas operacionais e distribuições são suportados. Por exemplo, aqui estão as instruções para o Ubuntu . Demonstração ( página de origem ):

Pode-se argumentar que nem todos do PowerShell estão disponíveis em ambientes não-Windows. Alguns recursos dependem de bibliotecas encontradas apenas no Windows. A propriedade ParsedHtml no tipo HtmlWebResponseObject retornado por Invoke-WebRequest , por exemplo, é útil apenas no Windows porque contém um objeto COM proveniente de uma biblioteca não gerenciada, mshtml.dll para ser específico. Em outras plataformas, não há nada lá. E, claro, há cmdlets para gerenciar sistemas encontrados apenas no Windows, como aplicativos modernos ( Get-AppxPackage e amigos).

Ainda assim, a infraestrutura do PowerShell funciona perfeitamente bem em outros sistemas operacionais. Muitos cmdlets podem ser usados em qualquer lugar, e o suporte só está melhorando.

    
por 04.05.2017 / 03:42
3

O último powershell para macos (6 alpha) tem melhor suporte a .net. Mas isso só funciona no Sierra osx. Por exemplo, isso funciona agora onde antes não funcionava:

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

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

As cores do console padrão são terríveis (amarelo para comandos, etc).

set-psreadlineoption command darkyellow
    
por 04.06.2017 / 19:50