Usar bibliotecas de cliente Kusto .NET do PowerShell
Os scripts do PowerShell podem usar as bibliotecas de cliente Kusto, pois o PowerShell integra-se inerentemente às bibliotecas do .NET. Neste artigo, você aprenderá a carregar e usar as bibliotecas de cliente para executar consultas e comandos de gerenciamento.
Pré-requisitos
- Uma ferramenta de arquivamento para extrair arquivos zip, como 7 Zip ou WinRAR.
Obter as bibliotecas
Para usar as bibliotecas de cliente Kusto .NET no PowerShell:
Baixe
Microsoft.Azure.Kusto.Tools
.Clique com o botão direito do mouse no pacote baixado. No menu, selecione sua ferramenta de arquivamento e extraia o conteúdo do pacote. Se a ferramenta de arquivamento não estiver visível no menu, selecione Mostrar mais opções. A extração resulta em várias pastas, uma das quais é nomeada ferramentas.
Dentro da pasta ferramentas , há diferentes subpastas que atendem a diferentes versões do PowerShell. Para o PowerShell versão 5.1, use a pasta net472 . Para o PowerShell versão 7 ou posterior, use qualquer uma das pastas de versão. Copie o caminho da pasta relevante.
No PowerShell, carregue as bibliotecas, substituindo
<path>
pelo caminho da pasta copiada:[System.Reflection.Assembly]::LoadFrom("<path>\Kusto.Data.dll")
Você deverá ver um resultado semelhante ao seguinte:
GAC Versão Location Falso v4.0.30319 C:\Downloads\tools\net472\Kusto.Data.dll
Depois de carregado, você pode usar as bibliotecas para se conectar a um cluster e um banco de dados.
Conectar-se a um cluster e um banco de dados
Autentique-se em um cluster e banco de dados com um dos seguintes métodos:
- Autenticação do usuário: Solicitar que o usuário verifique sua identidade em um navegador da Web.
- Autenticação de aplicativo:crie um aplicativo do MS Entra e use as credenciais para autenticação.
- Autenticação da CLI do Azure: Entre na CLI do Azure em seu computador e o Kusto recuperará o token da CLI do Azure.
Selecione a guia relevante.
Depois de executar sua primeira consulta ou comando, esse método abrirá uma janela interativa do navegador para autorização do usuário.
$clusterUrl = "<Your cluster URI>"
$databaseName = "<Your database name>"
$kcsb = New-Object Kusto.Data.KustoConnectionStringBuilder($clusterUrl, $databaseName)
Executar uma consulta
Crie um provedor de consultas e execute Linguagem de Consulta Kusto consultas.
O exemplo a seguir define uma consulta simples take para amostrar os dados. Para executar a consulta, substitua <TableName>
pelo nome de uma tabela no banco de dados. Antes de executar a consulta, a classe ClientRequestProperties é usada para definir uma ID de solicitação do cliente e um tempo limite do servidor. Em seguida, a consulta é executada e o conjunto de resultados é formatado e classificado.
$queryProvider = [Kusto.Data.Net.Client.KustoClientFactory]::CreateCslQueryProvider($kcsb)
$query = "<TableName> | take 5"
Write-Host "Executing query: '$query' with connection string: '$($kcsb.ToString())'"
# Optional: set a client request ID and set a client request property (e.g. Server Timeout)
$crp = New-Object Kusto.Data.Common.ClientRequestProperties
$crp.ClientRequestId = "MyPowershellScript.ExecuteQuery." + [Guid]::NewGuid().ToString()
$crp.SetOption([Kusto.Data.Common.ClientRequestProperties]::OptionServerTimeout, [TimeSpan]::FromSeconds(30))
# Run the query
$reader = $queryProvider.ExecuteQuery($query, $crp)
# Do something with the result datatable
# For example: print it formatted as a table, sorted by the "StartTime" column in descending order
$dataTable = [Kusto.Cloud.Platform.Data.ExtendedDataReader]::ToDataSet($reader).Tables[0]
$dataView = New-Object System.Data.DataView($dataTable)
$dataView | Sort StartTime -Descending | Format-Table -AutoSize
Saída
StartTime | EndTime | EpisodeID | EventID | Estado | EventType | InjuriesDirect | InjuriesIndirect | DeathsDirect | DeathsIndirect |
---|---|---|---|---|---|---|---|---|---|
2007-12-30 16:00:00 | 2007-12-30 16:05:00 | 11749 | 64588 | GEÓRGIA | Thunderstorm Wind | 0 | 0 | 0 | 0 |
2007-12-20 07:50:00 | 2007-12-20 07:53:00 | 12554 | 68796 | MISSISSIPI | Thunderstorm Wind | 0 | 0 | 0 | 0 |
2007-09-29 08:11:00 | 2007-09-29 08:11:00 | 11091 | 61032 | ATLÂNTICO SUL | Spout de água | 0 | 0 | 0 | 0 |
2007-09-20 21:57:00 | 2007-09-20 22:05:00 | 11078 | 60913 | FLÓRIDA | Tornado | 0 | 0 | 0 | 0 |
2007-09-18 20:00:00 | 2007-09-19 18:00:00 | 11074 | 60904 | FLÓRIDA | Chuva Forte | 0 | 0 | 0 | 0 |
Executar um comando de gerenciamento
Crie um provedor de administração CSL e execute comandos de gerenciamento.
O exemplo a seguir executa um comando de gerenciamento para marcar a integridade do cluster.
$adminProvider = [Kusto.Data.Net.Client.KustoClientFactory]::CreateCslAdminProvider($kcsb)
$command = [Kusto.Data.Common.CslCommandGenerator]::GenerateDiagnosticsShowCommand()
Write-Host "Executing command: '$command' with connection string: '$($kcsb.ToString())'"
# Run the command
$reader = $adminProvider.ExecuteControlCommand($command)
# Read the results
$reader.Read() # this reads a single row/record. If you have multiple ones returned, you can read in a loop
$isHealthy = $Reader.GetBoolean(0)
Write-Host "IsHealthy = $isHealthy"
Saída
IsHealthy = True
Para obter mais diretrizes sobre como executar comandos de gerenciamento com as bibliotecas de clientes kusto, consulte Criar um aplicativo para executar comandos de gerenciamento.
Exemplo
O exemplo a seguir demonstra o processo de carregar as bibliotecas, autenticar e executar uma consulta no cluster publicamente acessível help
.
# This is an example of the location from where you extract the Microsoft.Azure.Kusto.Tools package
# Make sure you load the types from a local directory and not from a remote share
# Make sure you load the version compatible with your PowerShell version (see explanations above)
# Use `dir "$packagesRoot\*" | Unblock-File` to make sure all these files can be loaded and executed
$packagesRoot = "C:\Microsoft.Azure.Kusto.Tools\tools\net472"
# Load the Kusto client library and its dependencies
[System.Reflection.Assembly]::LoadFrom("$packagesRoot\Kusto.Data.dll")
# Define the connection to the help cluster and database
$clusterUrl = "https://help.kusto.windows.net;Fed=True"
$databaseName = "Samples"
# MS Entra user authentication with interactive prompt
$kcsb = New-Object Kusto.Data.KustoConnectionStringBuilder($clusterUrl, $databaseName)
# Run a simple query
$queryProvider = [Kusto.Data.Net.Client.KustoClientFactory]::CreateCslQueryProvider($kcsb)
$query = "StormEvents | take 5"
$reader = $queryProvider.ExecuteQuery($query, $crp)
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de