Práticas recomendadas para várias plataformas do PowerShell 7
Quando o PowerShell foi lançado, o objetivo era trazer poderosas ferramentas de script para o Windows, que normalmente possuíam administração baseada em GUI na época. Desde então, o PowerShell cresceu e se tornou uma das linguagens de script mais populares. No momento da redação, ele está com 35 anos no índice TIOBE da maioria dos idiomas populares.
Um dos maiores contribuidores para esse aumento de popularidade é que a equipe do PowerShell da Microsoft a tornou open-source em 2016, apresentando o PowerShell Core for PowerShell versão 6. No entanto, isso causou alguns problemas inesperados, como suporte à compatibilidade entre versão 5.1 (Windows PowerShell) e 6.2 (PowerShell Core) ou com os mesmos cmdlets fazendo coisas ligeiramente diferentes em versões diferentes do . NET.
Para resolver isso, a equipe do PowerShell anunciou que estava desativando o PowerShell 5.1 e que a próxima versão após a 6.2 seria o PowerShell 7, cujo objetivo seria substituir o Windows PowerShell nos sistemas operacionais Windows sem sacrificar a compatibilidade ao executar no Mac ou Linux.
O PowerShell 7 foi lançado em março deste ano e, embora os próprios cmdlets sejam executados em qualquer sistema operacional, ainda existem algumas práticas recomendadas para garantir que os scripts do PowerShell funcionem sem problemas, independentemente de onde estejam sendo executados. >
Use nomes de diretório em minúsculas
No sistema operacional Windows, o caractere \\ ou barra invertida é usado para observar diretórios aninhados em um sistema de arquivos, enquanto no Linux e macOS, o caractere / ou barra invertida o faz e a barra invertida é usada como escape personagem. (Se você tiver problemas para manter esses dois retos, imagine-o tombando. A barra invertida cai para trás, a barra dianteira cai para a frente)
Isso pode criar alguns desafios ao criar scripts na maioria dos outros idiomas, mas o PowerShell 7 se traduz em um objeto de diretório e não se importa muito com os caracteres usados para dividir o caminho. Uma área em que você pode ter problemas, no entanto, é que os sistemas de arquivos Linux e macOS se preocupam com letras maiúsculas e tratam nomes de diretórios em diferentes casos como diretórios diferentes.
A melhor prática aqui é manter os nomes dos diretórios em letras minúsculas, independentemente do caminho que você usar. Se necessário, você pode passar o caminho como uma string e chamar o método ToLower () no seu código, mas isso só funcionará se o nome do diretório já estiver em letras minúsculas.
Não use aliasing
O alias pode ser uma ótima maneira de reduzir a quantidade de digitação necessária ao executar o PowerShell a partir de um console. É muito mais fácil digitar ls ou cgi do que Get-ChildItem, mesmo com a conclusão da guia. Dito isto, raramente é uma boa ideia usar aliases em scripts porque isso torna o script dependente de ter esse alias definido onde quer que seja executado.
Isso é especialmente verdadeiro para sistemas Linux e macOS. Nessas plataformas, em vez de usar um alias para executar outro comando do PowerShell, ele executa o comando nativo, o que significa que o objeto de retorno será muito diferente e descartará o restante do script.
ls e Get-ChildItem em execução no Windows 10 x Ubuntu Linux.
Alguns comandos como ls podem não mudar muito, mas com outros, como o comando date, o PowerShell retorna um objeto completamente diferente do comando nativo do Linux, que descartará qualquer coisa que dependa da saída posteriormente no código. Mesmo se você só precisar do valor da string em um script do PowerShell, use o PowerShell para obtê-lo.
date retorna um objeto DateTime no Windows e um objeto String no Linux.
Use uma instrução Switch para determinar o sistema operacional
Às vezes, você tem uma dependência que não pode rotular, independentemente dos tipos de truques que usa. Nesses casos, o PowerShell 7 possui alguns sinalizadores reservados que retornam verdadeiro ou falso, dependendo de qual sistema operacional você está executando. Por exemplo, $ IsMacOS retornará True no macOS e False em qualquer outro sistema operacional, e $ IsLinux retornará True, independentemente da distribuição do Linux em que você esteja.
Há também um sinalizador $ IsWindows, mas com uma grande ressalva: ele só retorna True ao executar o PowerShell Core ou o PowerShell 7 no Windows. Ele nunca foi portado de volta para o Windows PowerShell; portanto, ocorrerá apenas um erro ao ser executado lá.
Tyler Leonhardt, da equipe do PowerShell da Microsoft, apresentou uma ótima solução para determinar em qual SO você está quando executando uma plataforma cruzada, que é a declaração de opção que ele descreve aqui.
Agora você deve ter uma idéia de algumas maneiras de escrever seus scripts e módulos do PowerShell 7 para que eles possam executar uma plataforma um pouco mais suave. Experimente-os hoje em seus scripts!
Via: How to Geek
Nenhum comentário