Poder Shell para Windows

Este script também ilustra outro aspecto da forma como os administradores trabalham. Você poderia inspecionar manualmente cada pasta na unidade C, mas isso é lento e com 1.500 pastas para gerenciar simplesmente não é uma solução útil. Você também pode escrever um script para verificar, individualmente, os arquivos necessários, mas isso é frágil já que você teria que atualizá-lo sempre que uma nova pasta fosse criada ou uma pasta existente fosse excluída ou renomeado. A resposta é gastar um pouco mais de tempo escrevendo um roteiro geral, conforme ilustrado acima.

Poder Shell para Windows

Chegando ao .NET

Ao usar o PowerShell, seja no prompt de comando ou por meio de scripts, você pode acessar o poder do .NET de três maneiras: cmdlets, acesso .NET bruto ou acesso .NET aprimorado. Os comandos do PowerShell são conhecidos como cmdlets e chegam ao .NET Framework para fornecer acesso às informações subjacentes, mas em um nível mais abstrato. O acesso .NET bruto permite chamar classes .NET diretamente do PowerShell, enquanto o acesso .NET aprimorado fornece vários recursos que simplificar o acesso a objetos .NET brutos e fornecer um rico conjunto de recursos para usar ao escrever scripts ou usar o interativo concha.

Você pode usar o .NET bruto para obter acesso a algum objeto bruto, processar esse objeto usando o acesso .NET aprimorado e, em seguida, produzir e formatar a saída usando cmdlets. O script que mostrei acima faz algumas dessas coisas em um grau limitado – por exemplo, o A propriedade PSISCONTAINER que é verificada pela primeira linha do script é um exemplo de .NET aprimorado acesso. O PowerShell estende o objeto base com atributos adicionados, neste caso uma propriedade booliana que indica se o objeto é um contêiner (ou seja, uma pasta) ou um elemento raiz (ou seja, um arquivo). Em seguida, o script emprega cmdlets simples como LS e WRITE-HOST para verificar a existência do arquivo de sinalização de soma de verificação e produzir saída.

Os cmdlets do PowerShell são pequenos comandos atômicos que você pode digitar no prompt de comando ou colocar em um script para realizar alguma operação. Os nomes dos cmdlets empregam uma convenção de nomenclatura verbo-substantivo, como em GET-CHILDITEM, o que significa que os cmdlets base tendem a ter nomes longos. Portanto, o PowerShell fornece aliases como uma forma de escrever comandos mais concisos: no script acima, usei o alias LS para representar GET-CHILDITEM.

Os cmdlets expõem a funcionalidade do .NET de uma forma fácil de usar e amigável ao administrador. Por exemplo, o cmdlet GET-PROCESS é criado sobre a classe .NET SYSTEM.DIAGNOSTIC.PROCESS e seu método GETPROCESSES (para obter mais informações sobre esta classe .NET). O cmdlet GET-PROCESS retorna zero, um ou mais objetos de processo, conforme determinado por um conjunto avançado de parâmetros de entrada, nos quais você pode operar usando o cmdlet STOP-PROCESS para interromper sua execução.

Embora o objeto bruto .NET usado pelos programadores seja poderoso, os cmdlets do PowerShell fornecem e oferecem suporte à visão do administrador do sistema, por exemplo, pela nomenclatura consistente de cmdlets e parâmetros, para preservar o máximo de seu conhecimento existente possível. Há suporte avançado a caracteres curinga para nomeação de objetos, o que torna possível escrever comandos granulares e concisos. Ele também oferece suporte à verificação de ações que podem ter efeitos colaterais perigosos, para que você possa usar os parâmetros -WHATIF e -CONFIRM em cmdlets como STOP-PROCESS.

Normalmente você usa cmdlets cujos nomes começam com GET- para buscar os objetos nos quais deseja trabalhar, então GET-PROCESS obtém processos ativos, GET-HELP obtém ajuda, GET-SERVICE obtém serviços e assim por diante. Depois de obter o objeto que deseja manipular, você pode ler ou atualizar suas propriedades e usar outros cmdlets para executar operações nele – tendo obtido um conjunto de processos usando GET-PROCESS, você pode parar um ou mais deles usando STOP-PROCESS. O PowerShell fornece um grande conjunto de cmdlets para gerar saída, que inclui EXPORT-CLIXML, FORMAT-TABLE, FORMAT-LIST, WRITE-LOG, WRITE-HOST.