Delen via


Kusto .NET-clientbibliotheken gebruiken vanuit PowerShell

PowerShell-scripts kunnen gebruikmaken van de Kusto-clientbibliotheken, omdat PowerShell inherent kan worden geïntegreerd met .NET-bibliotheken. In dit artikel leert u hoe u de clientbibliotheken laadt en gebruikt om query's en beheeropdrachten uit te voeren.

Vereisten

  • Een archiveringsprogramma voor het extraheren van zip-bestanden, zoals 7-Zip of WinRAR.

De bibliotheken ophalen

De Kusto .NET-clientbibliotheken gebruiken in PowerShell:

  1. Download Microsoft.Azure.Kusto.Tools.

  2. Klik met de rechtermuisknop op het gedownloade pakket. Selecteer in het menu uw archiveringsprogramma en pak de inhoud van het pakket uit. Als het archiveringsprogramma niet zichtbaar is in het menu, selecteert u Meer opties weergeven. De extractie resulteert in meerdere mappen, waarvan één hulpprogramma heet.

  3. In de map Hulpprogramma's bevinden zich verschillende submappen die betrekking hebben op verschillende PowerShell-versies. Gebruik voor PowerShell versie 5.1 de map net472 . Voor PowerShell versie 7 of hoger gebruikt u een van de versiemappen. Kopieer het pad van de relevante map.

  4. Laad de bibliotheken vanuit PowerShell en vervang door <path> het gekopieerde mappad:

    [System.Reflection.Assembly]::LoadFrom("<path>\Kusto.Data.dll")
    

    Als het goed is, wordt ongeveer de volgende uitvoer weergegeven:

    GAC Versie Locatie
    Niet waar v4.0.30319 C:\Downloads\tools\net472\Kusto.Data.dll

Na het laden kunt u de bibliotheken gebruiken om verbinding te maken met een cluster en database.

Verbinding maken met een cluster en database

Verifieer bij een cluster en database met een van de volgende methoden:

  • Gebruikersverificatie: Vraag de gebruiker om zijn identiteit te verifiëren in een webbrowser.
  • Toepassingsverificatie:maak een MS Entra-app en gebruik de referenties voor verificatie.
  • Azure CLI-verificatie: Meld u aan bij de Azure CLI op uw computer en Kusto haalt het token op uit Azure CLI.

Selecteer het relevante tabblad.

Nadat u uw eerste query of opdracht hebt uitgevoerd, wordt met deze methode een interactief browservenster geopend voor gebruikersautorisatie.

$clusterUrl = "<Your cluster URI>"
$databaseName = "<Your database name>"

$kcsb = New-Object Kusto.Data.KustoConnectionStringBuilder($clusterUrl, $databaseName)

Een query uitvoeren

Maak een queryprovider en voer Kusto-querytaal query's uit.

In het volgende voorbeeld wordt een eenvoudige take-query gedefinieerd om een steekproef van de gegevens te nemen. Als u de query wilt uitvoeren, vervangt u door <TableName> de naam van een tabel in uw database. Voordat u de query uitvoert, wordt de klasse ClientRequestProperties gebruikt om een clientaanvraag-id en een servertime-out in te stellen. Vervolgens wordt de query uitgevoerd en wordt de resultatenset opgemaakt en gesorteerd.

$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

Uitvoer

StartTime EndTime EpisodeID EventID Staat EventType BlessuresDirect BlessuresIndirect DeathsDirect DeathsIndirect
2007-12-30 16:00:00 2007-12-30 16:05:00 11749 64588 GEORGIË Onweerswind 0 0 0 0
2007-12-20 07:50:00 2007-12-20 07:53:00 12554 68796 MISSISSIPPI Onweerswind 0 0 0 0
2007-09-29 08:11:00 2007-09-29 08:11:00 11091 61032 ATLANTISCHE ZUID Wateruitloop 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 Zware regen 0 0 0 0

Een beheeropdracht uitvoeren

Maak een CSL-beheerdersprovider en voer beheeropdrachten uit.

In het volgende voorbeeld wordt een beheeropdracht uitgevoerd om de status van het cluster te controleren.

$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"

Uitvoer

IsHealthy = True

Zie Een app maken om beheeropdrachten uit te voeren voor meer informatie over het uitvoeren van beheeropdrachten met de Kusto-clientbibliotheken.

Voorbeeld

In het volgende voorbeeld ziet u het proces van het laden van de bibliotheken, het verifiëren en uitvoeren van een query op het openbaar toegankelijke help cluster.

#  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)