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:
Download
Microsoft.Azure.Kusto.Tools
.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.
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.
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)
Gerelateerde inhoud
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor