Diferenças com o PowerShell: Porque deve deixar de usar o cmd?
Na série até agora, aprendemos sobre a história do shell tradicional do Windows, a Linha de Comandos (cmd.exe), a sua utilização básica e até a automação simples. A sua simplicidade e a sua contínua existência por razões de compatibilidade podem ser consideradas a própria história do Windows.
No entanto, por outro lado, também conhecemos a existência do "PowerShell", mais moderno e potente. Muitos de vós devem estar a sentir: "Já percebi o básico do cmd, mas devo mesmo mudar para o PowerShell?" ou "Quero saber mais sobre as vantagens concretas".
Este artigo é o seu "guia de graduação". Enquanto recordamos com carinho o "álbum de finalistas" que é a Linha de Comandos, vamos explicar exaustivamente, através da comparação, as razões decisivas e concretas pelas quais os criadores web modernos devem avançar para o "novo palco" do PowerShell. Quando terminar de ler este artigo, a sua mão, ao abrir o terminal, dirigir-se-á naturalmente para o ícone do PowerShell.
Comparação 1: O poder de "encontrar" a informação que quer - Os limites do texto e o potencial dos objetos
A diferença mais fundamental entre os dois reside no formato da informação que os comandos devolvem. Compreender isto é a chave para entender a diferença entre os dois.
Desafio: "Quero encontrar os 5 ficheiros maiores na minha pasta de documentos."
Uma tentativa na Linha de Comandos (cmd)
Tentar fazer isto no cmd não é simples. Pode obter uma lista de ficheiros com dir /s, mas o resultado é apenas uma cadeia de texto. Extrair apenas a parte do tamanho do ficheiro, ordená-la corretamente como um número e exibir os 5 primeiros itens... isto torna-se uma tarefa muito avançada e propensa a erros que requer o uso de loops for /f complexos e manipulação de cadeias de caracteres.
Por outras palavras, o cmd é bom para "os humanos olharem e julgarem", mas não é adequado para "um programa reutilizar os resultados para um processamento mais avançado".
A solução brilhante no PowerShell
Por outro lado, no PowerShell, esta tarefa pode ser resolvida com uma única linha, suave como água a correr.
Get-ChildItem -Path "C:\Users\YourName\Documents" -File -Recurse | Sort-Object -Property Length -Descending | Select-Object -First 5
Eis o que esta única linha está a fazer, passo a passo:
Get-ChildItem: Primeiro, obtém todos os ficheiros e pastas na pasta especificada como "objetos".|: Passa a coleção de objetos para o comando seguinte através de um pipe.Sort-Object: Ordena os objetos passados pelo tamanho do ficheiro (a propriedadeLength) em ordem decrescente (-Descending).|: Passa os resultados ordenados para o comando seguinte.Select-Object: Dos objetos passados, seleciona e exibe apenas os 5 primeiros (-First 5).
Em vez de se debater para analisar texto, manipula livremente dados estruturados pelas suas propriedades. Esta é a maior razão pela qual se diz que o PowerShell é "potente".
Comparação 2: O poder de "integração" com o exterior - Chamar ou não chamar uma API
No desenvolvimento web moderno, é comum obter e usar dados de APIs (Application Programming Interfaces) externas. Por exemplo, obter informação de um serviço web ou dados da previsão do tempo.
Desafio: "Quero usar a API do GitHub para obter a informação do utilizador da Microsoft e exibir o número de repositórios públicos."
O desafio na Linha de Comandos (cmd)
O cmd não tem funcionalidade incorporada para aceder à web e obter ou analisar dados como JSON. Para conseguir isto, teria de instalar separadamente uma ferramenta externa como o curl, e depois processar o texto JSON obtido usando ainda outro método, o que é muito trabalhoso.
A solução simples no PowerShell
O PowerShell vem de série com um cmdlet potente chamado Invoke-RestMethod. É uma excelente ferramenta que acede a uma API web e converte automaticamente os dados JSON devolvidos em objetos do PowerShell.
Primeiro, vamos obter os dados da API e guardá-los numa variável.
$gitHubUser = Invoke-RestMethod -Uri "https://api.github.com/users/microsoft"
E com apenas isto, tudo o que resta é aceder às propriedades do objeto.
Write-Host "Nome de utilizador: $($gitHubUser.name)"
Write-Host "Repositórios públicos: $($gitHubUser.public_repos)"
É como se estivesse a aceder a dados locais, pode aceder facilmente a informação da web com formas como .name e .public_repos. Esta capacidade de integração com serviços externos é uma vantagem esmagadora do PowerShell que o cmd não tem.
Conclusão: Porque devemos deixar de usar o cmd
Como vimos, o PowerShell não é um mero sucessor da Linha de Comandos. É uma ferramenta completamente nova, com uma nova filosofia, redesenhada de raiz para realizar tarefas modernas.
As razões pelas quais deve migrar do cmd para o PowerShell são claras.
- Potentes capacidades de processamento de dados: Pode manipular livremente objetos estruturados com o pipeline, sem se preocupar com a parede de texto.
- Consistência e facilidade de aprendizagem: O formato
Verbo-Substantivodos cmdlets facilita a adivinhação do que fazer a seguir, diminuindo a curva de aprendizagem. - Funcionalidades de scripting modernas: Variáveis mais avançadas, funções, tratamento de erros e outras funcionalidades permitem uma programação completa.
- Integração externa e extensibilidade: A fácil integração com APIs Web e bibliotecas .NET expande infinitamente o leque do que pode fazer.
- Multiplataforma: As competências que aprende no Windows podem ser diretamente aplicadas em servidores macOS e Linux.
O conhecimento da Linha de Comandos não é de todo um desperdício para compreender a história do Windows. No entanto, para aumentar a produtividade como criador web ou como profissional de TI a partir de agora, migrar para a ferramenta mais potente и moderna, o PowerShell, é sem dúvida o investimento mais sensato.
A nossa série de introdução ao cmd.exe termina aqui. Esperamos que esta série o tenha ajudado a superar a sua aversão ao "ecrã preto" e a descobrir o verdadeiro poder da linha de comandos. Obrigado!