O projeto do Windows PowerShell integra conceitos de vários ambientes diferentes. Vários deles são bem familiares às pessoas com experiência em shells específicos ou em ambientes de programação, mas poucas pessoas os conhecem. O estudo de alguns desses conceitos nos oferece uma visão geral muito útil do shell.
Os comandos não são baseados em texto
Ao contrário dos comandos das linhas de comando tradicionais, os cmdlets do Windows PowerShell foram projetados para lidar com objetos – informações estruturadas que são mais do que apenas uma cadeia de caracteres exibida na tela. A saída do comando sempre carrega consigo informações extras que podem ser usadas caso seja necessário. Discutiremos esse assunto em mais detalhes neste documento.
Se você já usou ferramentas de processamento de textos para processar dados de linha de comando, descobrirá que eles se comportam de maneira diferente caso tente usá-los no Windows PowerShell. Na maioria dos casos, você não precisa de ferramentas de processamento de textos para extrair informações específicas. Você pode acessar porções dos dados de forma direta, usando os comandos padrão de manipulação de objetos do Windows PowerShell.
A família de comandos é extensível
As interfaces como o Cmd.exe não oferecem uma forma de extensão direta do conjunto de comandos interno. Você pode criar ferramentas de linha de comando externas que executam o Cmd.exe, mas essas ferramentas externas não dispõem de serviços, como a integração da Ajuda, e o Cmd.exe não sabe automaticamente que eles são comandos válidos.
Os comandos binários nativos do Windows PowerShell, conhecidos como cmdlets (pronuncia-se command-lets), podem ser estendidos por cmdlets criados por você e adicionados ao Windows PowerShell com o uso de snap-ins. Os snap-ins do Windows PowerShell são compilados, assim como as ferramentas binárias de qualquer outra interface. Você pode utilizá-los para adicionar provedores do Windows PowerShell ao shell, assim como novos cmdlets.
Por causa da natureza especial dos comandos internos do Windows PowerShell, passaremos a nos referir a eles como cmdlets.
Observação: | |
O Windows PowerShell pode executar outros comandos além dos cmdlets. Não os abordaremos em detalhes no Guia do Usuário do Windows PowerShell, mas é útil conhecê-los como categorias de tipos de comandos. O Windows PowerShell oferece suporte a scripts análogos aos scripts de shell do UNIX e aos arquivos de lote do Cmd.exe, mas sua extensão de nome de arquivo é .ps1. O Windows PowerShell também permite que você crie funções internas que podem ser usadas diretamente na interface ou nos scripts. |
O Windows PowerShell lida com entrada e exibição de console
Quando você digita um comando, o Windows PowerShell sempre processa a entrada de linha de comando de forma direta. Ele também formata a saída exibida na tela. Isso é significativo porque reduz o trabalho necessário a cada cmdlet e garante que você sempre faça as coisas da mesma maneira, a despeito do cmdlet utilizado. Um exemplo de como isso pode simplificar a vida dos desenvolvedores e dos usuários de ferramentas é a Ajuda da linha de comando.
As ferramentas tradicionais de linha de comando têm seus próprios esquemas de solicitação e exibição da Ajuda. Algumas ferramentas de linha de comando usam /? para disparar a exibição da Ajuda; outras usam -?, /Hou até //. Algumas exibirão a Ajuda em uma janela GUI, e não na tela do console. Algumas ferramentas complexas, como os atualizadores de aplicativos, descompactam arquivos internos antes de exibir a Ajuda. Se você usar o parâmetro incorreto, a ferramenta pode ignorar o que foi digitado e começar a executar uma tarefa automaticamente.
Quando você insere um comando no Windows PowerShell, tudo o que é digitado é automaticamente analisado e pré-processado. Se você usar o parâmetro -? com um cmdlet do Windows PowerShell, isso sempre significará "mostre-me a Ajuda para esse comando". Os desenvolvedores de cmdlets não precisam analisar o comando, mas apenas fornecer o texto da Ajuda.
É importante entender que os recursos da Ajuda do Windows PowerShell estão disponíveis mesmo quando você executa ferramentas de linha de comando tradicionais no Windows PowerShell. O Windows PowerShell processa os parâmetros e passa os resultados para as ferramentas externas.
Observação: | |
Se você executar um aplicativo gráfico no Windows PowerShell, a janela do aplicativo será exibida. O Windows PowerShell interfere somente quando está processando a entrada de linha de comando fornecida por você ou quando a saída do aplicativo retorna à janela do console; ele não afeta o funcionamento interno do aplicativo. |
O Windows PowerShell usa parte da sintaxe do C#
O Windows PowerShell tem recursos e palavras-chave de sintaxe muito similares aos utilizados na linguagem de programação C# porque é baseado no .NET Framework. Aprender o Windows PowerShell tornará o aprendizado de C# muito mais fácil, caso você tenha interesse na linguagem.
Se você não for um programador de C#, essa similaridade não será importante. Entretanto, se você já conhece um pouco de C#, as similaridades poderão facilitar o aprendizado do Windows PowerShell.