O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos

Historicamente, os utilitários de linha de comando em sistemas Unix são mais bem desenvolvidos do que no Windows, mas com o advento de uma nova solução, a situação mudou.

O Windows PowerShell permite que administradores de sistema automatizem a maioria das tarefas rotineiras. Com ele, você pode alterar configurações, parar e iniciar serviços e também realizar manutenção na maioria dos aplicativos instalados. Seria errado perceber a janela azul como outro interpretador de comandos. Esta abordagem não reflete a essência das inovações propostas pela Microsoft. Na verdade, as possibilidades do Windows PowerShell são muito mais amplas: em uma pequena série de artigos, tentaremos descobrir como a solução da Microsoft difere das ferramentas com as quais estamos mais familiarizados.

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos

Principais recursos 

Obviamente, o Windows PowerShell é principalmente um shell de script, originalmente criado no .NET Framework e, posteriormente, no .NET Core. Ao contrário dos shells que aceitam e retornam dados de texto, o Windows PowerShell funciona com classes .NET que possuem propriedades e métodos. O PowerShell permite executar comandos comuns e também dá acesso a objetos COM, WMI e ADSI. Utiliza vários armazenamentos, como o sistema de arquivos ou o registro do Windows, para acesso aos chamados. fornecedores. Vale ressaltar a possibilidade de incorporar componentes executáveis ​​​​do PowerShell em outros aplicativos para implementar diversas operações, incl. através de uma interface gráfica. O inverso também é verdadeiro: muitos aplicativos do Windows fornecem acesso às suas interfaces de gerenciamento por meio do PowerShell. 

O Windows PowerShell permite:

  • Alterar configurações do sistema operacional;
  • Gerenciar serviços e processos;
  • Configurar funções e componentes de servidor;
  • Instalar software;
  • Gerenciar software instalado através de interfaces especiais;
  • Incorporar componentes executáveis ​​em programas de terceiros;
  • Crie scripts para automatizar tarefas administrativas;
  • Trabalhe com o sistema de arquivos, registro do Windows, armazenamento de certificados, etc.

Shell e ambiente de desenvolvimento

Existe o Windows PowerShell em duas formas: além do emulador de console com shell de comando, existe um Ambiente de Script Integrado (ISE). Para acessar a interface da linha de comando, basta selecionar o atalho apropriado no menu do Windows ou executar powershell.exe no menu Executar. Uma janela azul aparecerá na tela, visivelmente diferente em recursos do cmd.exe antediluviano. Há preenchimento automático e outros recursos familiares aos usuários de shells de comando para sistemas Unix.

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos

Para trabalhar com o shell, você precisa se lembrar de alguns atalhos de teclado:

  • As setas para cima e para baixo percorrem o histórico para repetir comandos digitados anteriormente;
  • A seta para a direita no final de uma linha redigita o comando anterior caractere por caractere;
  • Ctrl+Home exclui o texto digitado da posição do cursor até o início da linha;
  • Ctrl+End exclui o texto do cursor até o final da linha.

F7 mostra uma janela com comandos digitados e permite selecionar um deles. O console também funciona com seleção de texto com o mouse, copiar e colar, posicionamento do cursor, exclusão, retrocesso - tudo o que gostamos.

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
O Windows PowerShell ISE é um ambiente de desenvolvimento completo com um editor de código com guias e destaque de sintaxe, construtor de comandos, depurador integrado e outras delícias de programação. Se você escrever um hífen após o nome do comando no editor do ambiente de desenvolvimento, obterá todas as opções disponíveis na lista suspensa com uma indicação do tipo. Você pode iniciar o PowerShell ISE por meio de um atalho no menu do sistema ou usando o arquivo executável powershell_ise.exe.

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos

Cmdlets 

No Windows PowerShell, o chamado. cmdlets. Estas são classes .NET especializadas que fornecem uma variedade de funcionalidades. Eles são chamados de Ação-Objeto (ou Verbo-Substantivo, se você preferir), e o link separado por hífen se assemelha ao predicado e ao sujeito em sentenças de linguagem natural. Por exemplo, Get-Help significa literalmente "Get-Help" ou em um contexto do PowerShell: "Show-Help". Na verdade, este é um análogo do comando man em sistemas Unix, e os manuais no PowerShell devem ser solicitados desta forma, e não chamando cmdlets com a tecla --help ou /?. Não se esqueça da documentação online do PowerShell: A Microsoft tem tudo bastante detalhado.

Além de Get, os cmdlets usam outros verbos para denotar ações (e não apenas verbos, estritamente falando). Na lista abaixo damos alguns exemplos:

Add - adicionar;
Clear - claro;
Enable - ligar;
Disable - desligar;
New - criar;
Remove - excluir;
Set - perguntar;
Start - correr;
Stop - parar;
Export - exportação;
Import - importar.

Existem cmdlets de sistema, de usuário e opcionais: como resultado da execução, todos eles retornam um objeto ou uma matriz de objetos. Eles não diferenciam maiúsculas de minúsculas, ou seja, do ponto de vista do interpretador de comandos, não há diferença entre Get-Help e get-help. O caractere ';' é utilizado para separação, mas é obrigatório colocá-lo somente se vários cmdlets forem executados na mesma linha. 

Os cmdlets do Windows PowerShell são agrupados em módulos (NetTCPIP, Hyper-V, etc.) e há um cmdlet Get-Command para pesquisar por objeto e ação. Você pode exibir a ajuda assim:

Get-Help Get-Command

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos

Por padrão, o comando exibe uma breve ajuda, mas os parâmetros (argumentos) são passados ​​aos cmdlets conforme necessário. Com a ajuda deles, você pode, por exemplo, obter ajuda detalhada (parâmetro -Detalhado) ou completa (parâmetro -Full), bem como exibir exemplos (parâmetro -Exemplos):

Get-Help Get-Command -Examples

A ajuda no Windows PowerShell é atualizada pelo cmdlet Update-Help. Se a linha de comando for muito longa, os argumentos do cmdlet podem ser movidos para a próxima escrevendo o caractere de serviço '`' e pressionando Enter - apenas terminar de escrever o comando em uma linha e continuar em outra não funcionará.

Aqui estão alguns exemplos de cmdlets comuns: 

Get-Process - mostrar processos em execução no sistema;
Get-Service — mostrar serviços e seu status;
Get-Content - exibe o conteúdo do arquivo.

Para cmdlets e utilitários externos usados ​​​​com frequência, o Windows PowerShell possui sinônimos curtos - aliases (do inglês. Alias). Por exemplo, dir é um alias para Get-ChildItem. A lista de sinônimos também inclui análogos de comandos de sistemas Unix (ls, ps, etc.), e o cmdlet Get-Help é chamado pelo comando help. Uma lista completa de sinônimos pode ser visualizada usando o cmdlet Get-Alias:

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos

Scripts, funções, módulos e linguagem PowerShell

Os scripts do Windows PowerShell são armazenados como arquivos de texto simples com extensão .ps1. Você não pode iniciá-los clicando duas vezes: você precisa clicar com o botão direito para acessar o menu de contexto e selecionar o item “Executar no PowerShell”. No console, você terá que especificar o caminho completo para o script ou ir para o diretório apropriado e escrever o nome do arquivo. A execução de scripts também é limitada pela política do sistema e, para verificar as configurações atuais, você pode usar o cmdlet Get-ExecutionPolicy, que retornará um dos seguintes valores:

Restricted — o lançamento de scripts está desabilitado (por padrão);
AllSigned - somente é permitido o lançamento de scripts assinados por um desenvolvedor confiável;
RemoteSigned - permissão para executar scripts assinados e próprios;
Unrestricted - tem permissão para executar qualquer script.

O administrador tem duas opções. O mais seguro envolve a assinatura de scripts, mas este é um feitiço bastante sério - trataremos disso em artigos futuros. Agora vamos seguir o caminho de menor resistência e mudar a política:

Set-ExecutionPolicy RemoteSigned

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
O PowerShell precisará ser executado como administrador para fazer isso, embora você possa alterar a política do usuário atual com uma configuração especial.

Os scripts são escritos em uma linguagem de programação orientada a objetos, cujos comandos são nomeados de acordo com o mesmo princípio dos cmdlets considerados anteriormente: "Action-Object" ("Verb-Noun"). Seu principal objetivo é automatizar tarefas administrativas, mas é uma linguagem interpretada completa que possui todas as construções necessárias: salto condicional, loops, variáveis, arrays, objetos, tratamento de erros, etc. Qualquer editor de texto é adequado para scripts, mas é melhor executar o Windows PowerShell ISE.

Você pode passar parâmetros para o script, torná-los obrigatórios e definir valores padrão. Além disso, o Windows PowerShell permite criar e chamar funções da mesma maneira que os cmdlets, usando a construção Function e chaves. Um script com funções é chamado de módulo e possui uma extensão .psm1. Os módulos devem ser armazenados em diretórios definidos nas variáveis ​​de ambiente do PowerShell. Você pode visualizá-los com o seguinte comando:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Transportadores

No último exemplo, usamos uma construção familiar aos usuários do shell Unix. No Windows PowerShell, a barra vertical também permite passar a saída de um comando para a entrada de outro, mas há uma diferença significativa na implementação do pipeline: não estamos mais falando de um conjunto de caracteres ou de algum tipo de texto. Cmdlets integrados ou funções definidas pelo usuário retornam objetos ou matrizes de objetos e também podem recebê-los como entrada. Assim como o shell Bourne e seus muitos sucessores, o PowerShell facilita tarefas complexas com um pipeline.

O exemplo de pipeline mais simples é assim:

Get-Service | Sort-Object -property Status

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
Primeiro, o cmdlet Get-Service é executado e, em seguida, todos os serviços recebidos por ele são passados ​​​​para o cmdlet Sort-Object para classificação pela propriedade Status. O argumento para o qual o resultado da seção anterior do pipeline é passado depende de seu tipo - geralmente é InputObject. Este assunto será discutido com mais detalhes em um artigo dedicado à linguagem de programação PowerShell. 

Se desejar, você pode continuar a cadeia e passar o resultado da operação Sort-Object para outro cmdlet (eles serão executados da esquerda para a direita). A propósito, os usuários do Windows também têm acesso à construção de paginação familiar a todos os Unixoids: 

Get-Service | Sort-Object -property Status | more

Executando tarefas em segundo plano 

Muitas vezes é necessário executar um determinado comando em background, para não esperar o resultado de sua execução na sessão shell. O Windows PowerShell possui vários cmdlets para este caso:

Start-Job - lançar uma tarefa em segundo plano;
Stop-Job — pare a tarefa em segundo plano;
Get-Job — veja a lista de tarefas em segundo plano;
Receive-Job — visualizar o resultado da execução da tarefa em segundo plano;
Remove-Job — excluir uma tarefa em segundo plano;
Wait-Job - transferindo a tarefa em segundo plano de volta para o console.

Para iniciar uma tarefa em segundo plano, usamos o cmdlet Start-Job e especificamos um comando ou conjunto de comandos entre chaves:

Start-Job {Get-Service}

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
As tarefas em segundo plano no Windows PowerShell podem ser manipuladas conhecendo seus nomes. Primeiro, vamos aprender como exibi-los:

Get-Job

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
Agora vamos mostrar o resultado do job Job1:

Receive-Job Job1 | more

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
Tudo é muito simples.

Execução remota de comandos

O Windows PowerShell permite executar comandos e scripts não apenas no computador local, mas também em um computador remoto e até mesmo em um grupo inteiro de máquinas. Existem várias maneiras de fazer isso:

  • Muitos cmdlets têm um parâmetro -ComputerName, mas desta forma não funcionará, por exemplo, criar um transportador;
  • Cmdlet Enter-PSSession permite criar uma sessão interativa em uma máquina remota; 
  • Usando o cmdlet Invoke-Command você pode executar comandos ou scripts em um ou mais computadores remotos.

Versões do PowerShell

O PowerShell mudou muito desde seu primeiro lançamento em 2006. A ferramenta está disponível para muitos sistemas executados em diferentes plataformas de hardware (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux e OS X. Versão mais recente 6.2 lançada em 10 de janeiro de 2018. Os scripts escritos para versões anteriores provavelmente funcionarão em versões posteriores, mas o backporting pode ser problemático porque o PowerShell introduziu um grande número de novos cmdlets ao longo dos anos de desenvolvimento. Você pode descobrir a versão do shell de comando instalado no computador usando a propriedade PSVersion da variável interna $PSVersionTable:

$PSVersionTable.PSVersion

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
Você também pode usar o cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos
O mesmo é feito com o cmdlet Get-Host. Na verdade, existem muitas opções, mas para utilizá-las é necessário aprender a linguagem de programação PowerShell, o que faremos em próximo artigo

Resultados de 

A Microsoft conseguiu criar um shell realmente poderoso com um ambiente integrado conveniente para o desenvolvimento de scripts. Difere das ferramentas que conhecemos no mundo Unix pela profunda integração com sistemas operacionais da família Windows, bem como com software para eles e a plataforma .NET Core. O PowerShell pode ser chamado de shell orientado a objetos porque cmdlets e funções definidas pelo usuário retornam objetos ou matrizes de objetos e podem tomá-los como entrada. Achamos que todos os administradores de servidores no Windows deveriam possuir esta ferramenta: já passou o tempo em que eles podiam viver sem a linha de comando. Um shell de console avançado é especialmente necessário em nosso VPS de baixo custo executando Windows Server Core, mas essa é uma história completamente diferente.

O que é o Windows PowerShell e com o que ele é consumido? Parte 1: principais recursos

Apenas usuários registrados podem participar da pesquisa. Entrarpor favor

Quais tópicos devem ser abordados primeiro nos próximos artigos da série?

  • 53,2%Programando no PowerShell123

  • 42,4%Funções e módulos do PowerShell98

  • 22,1%Como assinar seus próprios scripts?51

  • 12,1%Trabalhando com repositórios por meio de provedores (provedores)28

  • 57,6%Automatizando a administração do computador com PowerShell133

  • 30,7%Gerenciamento de software e incorporação de executáveis ​​do PowerShell em produtos de terceiros71

231 usuários votaram. 37 usuários se abstiveram.

Fonte: habr.com

Adicionar um comentário