Uso de bibliotecas cliente de .NET de Kusto desde PowerShell
Los scripts de PowerShell pueden usar las bibliotecas cliente de Kusto, ya que PowerShell se integra intrínsecamente con las bibliotecas de .NET. En este artículo, aprenderá a cargar y usar las bibliotecas cliente para ejecutar consultas y comandos de administración.
Requisitos previos
- Herramienta de archivado para extraer archivos ZIP, como 7-Zip o WinRAR.
Obtención de las bibliotecas
Para usar las bibliotecas cliente de .NET de Kusto en PowerShell:
Descargue
Microsoft.Azure.Kusto.Tools
.Haga clic con el botón derecho en el paquete descargado. En el menú, seleccione la herramienta de archivado y extraiga el contenido del paquete. Si la herramienta de archivado no está visible en el menú, seleccione Mostrar más opciones. La extracción da como resultado varias carpetas, una de las cuales se denomina herramientas.
Dentro de la carpeta de herramientas , hay diferentes subcarpetas que sirven para diferentes versiones de PowerShell. Para PowerShell versión 5.1, use la carpeta net472 . Para PowerShell versión 7 o posterior, use cualquiera de las carpetas de versión. Copie la ruta de acceso de la carpeta correspondiente.
Desde PowerShell, cargue las bibliotecas y reemplace
<path>
por la ruta de acceso de carpeta copiada:[System.Reflection.Assembly]::LoadFrom("<path>\Kusto.Data.dll")
Debería ver una salida similar a la siguiente:
GAC Versión Location False v4.0.30319 C:\Downloads\tools\net472\Kusto.Data.dll
Una vez cargado, puede usar las bibliotecas para conectarse a un clúster y una base de datos.
Conexión a un clúster y una base de datos
Autentíquese en un clúster y una base de datos con uno de los métodos siguientes:
- Autenticación de usuario: pida al usuario que compruebe su identidad en un explorador web.
- Autenticación de aplicaciones: cree una aplicación MS Entra y use las credenciales para la autenticación.
- Autenticación de la CLI de Azure: inicie sesión en la CLI de Azure en la máquina y Kusto recuperará el token de la CLI de Azure.
Seleccione la pestaña correspondiente.
Una vez que ejecute la primera consulta o comando, este método abrirá una ventana interactiva del explorador para la autorización del usuario.
$clusterUrl = "<Your cluster URI>"
$databaseName = "<Your database name>"
$kcsb = New-Object Kusto.Data.KustoConnectionStringBuilder($clusterUrl, $databaseName)
Ejecución de una consulta
Cree un proveedor de consultas y ejecute consultas Lenguaje de consulta Kusto.
En el ejemplo siguiente se define una consulta take simple para muestrear los datos. Para ejecutar la consulta, reemplace por <TableName>
el nombre de una tabla de la base de datos. Antes de ejecutar la consulta, la clase ClientRequestProperties se usa para establecer un identificador de solicitud de cliente y un tiempo de espera del servidor. A continuación, se ejecuta la consulta y el conjunto de resultados tiene el formato y la ordenación.
$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
Salida
StartTime | EndTime | EpisodeID | Id. de evento | State | EventType | InjuriesDirect | InjuriesIndirect | DeathsDirect = | DeathsIndirect |
---|---|---|---|---|---|---|---|---|---|
2007-12-30 16:00:00 | 2007-12-30 16:05:00 | 11749 | 64588 | GEORGIA | Viento de tormenta | 0 | 0 | 0 | 0 |
2007-12-20 07:50:00 | 2007-12-20 07:53:00 | 12554 | 68796 | MISISIPÍ | Viento de tormenta | 0 | 0 | 0 | 0 |
2007-09-29 08:11:00 | 2007-09-29 08:11:00 | 11091 | 61032 | ATLÁNTICO SUR | Spout de agua | 0 | 0 | 0 | 0 |
2007-09-20 21:57:00 | 2007-09-20 22:05:00 | 11078 | 60913 | FLORIDA | Tornado | 0 | 0 | 0 | 0 |
2007-09-18 20:00:00 | 2007-09-19 18:00:00 | 11074 | 60904 | FLORIDA | Lluvia intensa | 0 | 0 | 0 | 0 |
Ejecución de un comando de administración
Cree un proveedor de administración de CSL y ejecute comandos de administración.
En el ejemplo siguiente se ejecuta un comando de administración para comprobar el estado del clúster.
$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"
Salida
IsHealthy = True
Para obtener más instrucciones sobre cómo ejecutar comandos de administración con las bibliotecas cliente de Kusto, consulte Creación de una aplicación para ejecutar comandos de administración.
Ejemplo
En el ejemplo siguiente se muestra el proceso de carga de las bibliotecas, la autenticación y la ejecución de una consulta en el clúster accesible help
públicamente.
# 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)
Contenido relacionado
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de