Korzystanie z bibliotek klienckich platformy .NET usługi Kusto z poziomu programu PowerShell
Skrypty programu PowerShell mogą używać bibliotek klienta Kusto, ponieważ program PowerShell z natury integruje się z bibliotekami platformy .NET. W tym artykule dowiesz się, jak ładować biblioteki klienckie i używać ich do uruchamiania zapytań i poleceń zarządzania.
Wymagania wstępne
- Narzędzie archiwizacji do wyodrębniania plików zip, takich jak 7-Zip lub WinRAR.
Pobieranie bibliotek
Aby użyć bibliotek klienckich kusto .NET w programie PowerShell:
Pobierz plik
Microsoft.Azure.Kusto.Tools
.Kliknij prawym przyciskiem myszy pobrany pakiet. Z menu wybierz narzędzie do archiwizacji i wyodrębnij zawartość pakietu. Jeśli narzędzie archiwizacji nie jest widoczne z menu, wybierz pozycję Pokaż więcej opcji. Wyodrębnianie powoduje wyświetlenie wielu folderów, z których jedna nosi nazwę narzędzia.
W folderze narzędzi istnieją różne podfoldery, które są obsługiwane w różnych wersjach programu PowerShell. W przypadku programu PowerShell w wersji 5.1 użyj folderu net472 . W przypadku programu PowerShell w wersji 7 lub nowszej użyj dowolnego folderu wersji. Skopiuj ścieżkę odpowiedniego folderu.
Z poziomu programu PowerShell załaduj biblioteki, zastępując
<path>
ciąg skopiowaną ścieżką folderu:[System.Reflection.Assembly]::LoadFrom("<path>\Kusto.Data.dll")
Powinny pojawić się dane wyjściowe podobne do następujących:
GAC Wersja Lokalizacja Fałsz v4.0.30319 C:\Downloads\tools\net472\Kusto.Data.dll
Po załadowaniu można użyć bibliotek do nawiązania połączenia z klastrem i bazą danych.
Nawiązywanie połączenia z klastrem i bazą danych
Uwierzytelnianie w klastrze i bazie danych przy użyciu jednej z następujących metod:
- Uwierzytelnianie użytkownika: Monituj użytkownika o zweryfikowanie swojej tożsamości w przeglądarce internetowej.
- Uwierzytelnianie aplikacji:utwórz aplikację MS Entra i użyj poświadczeń do uwierzytelniania.
- Uwierzytelnianie interfejsu wiersza polecenia platformy Azure: Zaloguj się do interfejsu wiersza polecenia platformy Azure na maszynie, a usługa Kusto pobierze token z interfejsu wiersza polecenia platformy Azure.
Wybierz odpowiednią kartę.
Po uruchomieniu pierwszego zapytania lub polecenia ta metoda otworzy interaktywne okno przeglądarki na potrzeby autoryzacji użytkownika.
$clusterUrl = "<Your cluster URI>"
$databaseName = "<Your database name>"
$kcsb = New-Object Kusto.Data.KustoConnectionStringBuilder($clusterUrl, $databaseName)
Uruchamianie zapytania
Utwórz dostawcę zapytań i uruchom zapytania język zapytań Kusto.
W poniższym przykładzie zdefiniowano proste zapytanie take w celu próbkowania danych. Aby uruchomić zapytanie, zastąp ciąg <TableName>
nazwą tabeli w bazie danych. Przed uruchomieniem zapytania klasa ClientRequestProperties służy do ustawiania identyfikatora żądania klienta i limitu czasu serwera. Następnie zapytanie jest uruchamiane, a zestaw wyników jest sformatowany i posortowany.
$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
Dane wyjściowe
StartTime | EndTime | Identyfikator odcinka | Identyfikator zdarzenia | Stan | Typ zdarzenia | InjuriesDirect | UrazyIndirect | DeathsDirect | DeathsIndirect |
---|---|---|---|---|---|---|---|---|---|
2007-12-30 16:00:00 | 2007-12-30 16:05:00 | 11749 | 64588 | GRUZJA | Burza wiatru | 0 | 0 | 0 | 0 |
2007-12-20 07:50:00 | 2007-12-20 07:53:00 | 12554 | 68796 | MISSISSIPPI | Burza wiatru | 0 | 0 | 0 | 0 |
2007-09-29 08:11:00 | 2007-09-29 08:11:00 | 11091 | 61032 | POŁUDNIE ATLANTYCKIE | Spout wody | 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 | Ulewny deszcz | 0 | 0 | 0 | 0 |
Uruchamianie polecenia zarządzania
Utwórz dostawcę administratora CSL i uruchom polecenia zarządzania.
W poniższym przykładzie jest uruchamiane polecenie zarządzania w celu sprawdzenia kondycji klastra.
$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"
Dane wyjściowe
IsHealthy = True
Aby uzyskać więcej wskazówek dotyczących uruchamiania poleceń zarządzania za pomocą bibliotek klienckich usługi Kusto, zobacz Tworzenie aplikacji do uruchamiania poleceń zarządzania.
Przykład
W poniższym przykładzie pokazano proces ładowania bibliotek, uwierzytelniania i wykonywania zapytania w publicznie dostępnym help
klastrze.
# 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)
Zawartość pokrewna
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla