Como Chamar uma API pelo PowerShell

Pessoal. 

Você já fez chamadas de APIs em scripts PowerShell? Saiba que utilizamos essas chamadas com muita frequência em scripts de automação. Então, nos acompanhe neste artigo e veja como é simples..

Em um caso específico, necessitávamos coletar dados de um cliente e, para não complicar muito criando um app com .Net ou ETL, fizemos um script em PowerShell para atender à necessidade.

Agora, vamos lá! Para este exemplo, vou usar a API do Azure, que retorna os dados de consumo de espaço do Azure SQL Database.

Além disso, a título de conhecimento, o Azure tem várias APIs que retorna dados e informações dos seus serviços, neste site tem a documentação de cada uma das APIs: Azure SQL Database REST API reference | Microsoft Docs para este artigo vamos usar especificamente esta API: Database Usages – List By Database – REST API (Azure SQL Database) | Microsoft Docs, que retorna informações de espaço usado e limite de espaço contratado pelo Azure SQL Database. 

A chamada desta API em específico é bem simples, pois informamos 5 valores:

  1. Subscription: O ID da Subscription;
  2. ResourceGroup: O nome do grupo de recurso;
  3. Servers: O nome do servidor do SQL Database;
  4. Database: O nome do SQL Database;
  5. Token: O token de autenticação que é renovado frequentemente. 

Os 4 primeiros itens são informados na URL da API, segue abaixo um print do Postman com a chamada da API. 

O token é informado no Header da chamada passando como uma Autenticação do tipo Bearer.

E o resultado é um JSON com as informações que desejamos:

Certo, pelo Postman a API retornou, agora vamos ao script em Power Shell. Vamos explicar parte por parte do script para ser o mais didático possível.

Primeira Parte – Conectar na subscription

Como já citado, a API necessita de um Token para autenticação e este Token tem uma validade razoavelmente curta. Por este motivo, incluímos no script a geração do Token. Assim, para cada conexão à API, geramos um novo Token, o que evita que ele expire entre uma conexão e outra.

Abaixo segue o código desta primeira parte:

Linha 2:

Utilizamos o comando Install-Module apenas se o módulo Az ainda não estiver instalado. Caso contrário, podemos ignorá-lo;

Linha 3:

Esta é obrigatório, pois ele carrega na sessão do Power Shell os comandos e recursos necessários do módulo AZ;

Linha 5, 6, 7 e 8:

São definições de variáveis que depois serão usadas na conexão com a API;

Linha 9:

Importamos a credencial. Esta credencial deve conter um e-mail e uma senha com acesso ao grupo de recurso do SQL Database. Por este motivo, utilizamos esta abordagem, pois ela impede que o usuário e a senha fiquem expostos no script. Além disso, mesmo que alguém tenha acesso ao arquivo XML, a senha permanece criptografada. Podemos falar mais sobre este assunto em outro artigo;

Linha 10:

Conectamos na Subscription do Azure, informando o Id da Subscription e também a credencial.

Segunda Parte – Gerar o token

Linha 11:

Vamos atribuir a uma variável o Contexto da Subscription que conectamos na Linha 10;

Linha 12:

Criamos uma variável de Profile, a partir da Classe de Authtentication;

Linha 13:

Atribuímos a um novo objeto do tipo RMProfileCliente usando o profile criado na Linha 12;

Linha 14:

Por fim, usamos o objeto da linha 13 para gerar o Access Token passando por parâmetro o TenantId do objeto criado na Linha 12.

Terceira  Parte – Montar o Header da chamada da API

Linha 16:

Criamos um Array para realizar a chamada da API. Neste Array, definimos dois parâmetros: o Content-Type, que determina que o retorno será um JSON, e, além disso, a autorização, que utiliza um Token do tipo Bearer.

Quarta Parte – Conecta na API

Nesta quarta parte vamos efetivamente conectar e retornar os dados da API.

Linha 21:

Montagem da URL da API, como anteriormente definimos as variáveis como os valores, neste item concatenamos ao URL com as variáveis como o ID da Subscription, nome do servidor, nome banco de dados etc.

Linha 22:

Criamos outro Array para os parâmetros que a classe Invoke-RestMethod utilizará. Neste Array, definimos que a chamada será do tipo GET, informamos a URL e os Headers, que já incluem o Token.

Linha 27:

Temos a chamada propriamente dita, onde usamos o comando Invoke-RestMethod passando como parâmetros o Array definido na Linha 22. Assim, gravamos o retorno da API na variável $result.

Linha 28:

Para finalizar, gravamos o valor da variável $result em um arquivo e, assim, temos o retorno da API disponível para consumo. Claro que também podemos deserializar este resultado em uma classe, se necessário.

Espero que tenham gostado do artigo e que sejam úteis para vocês. Além disso, o exemplo usado neste artigo foi feito no PowerShell Core, que é baseado no .Net Core, então, para quem conhece e programa em .Net, deve ter sido bem fácil de entender. Por fim, adicionaremos o script completo no Github.

Até o próximo artigo.
Por Tiago Crespi e Rodrigo Crespi

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Artigos Recentes

Como Chamar uma API pelo PowerShell

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: [email protected]
Telefone: (54) 3401-1471

Abrir bate-papo
Olá
Podemos ajudar?