Использование клиентских библиотек Kusto .NET из PowerShell
Сценарии PowerShell могут использовать клиентские библиотеки Kusto, так как PowerShell изначально интегрируется с библиотеками .NET. Из этой статьи вы узнаете, как загружать и использовать клиентские библиотеки для выполнения запросов и команд управления.
Предварительные требования
- Средство архивации для извлечения ZIP-файлов, например 7-Zip или WinRAR.
Получение библиотек
Чтобы использовать клиентские библиотеки Kusto .NET в PowerShell, выполните следующие действия.
Загрузите
Microsoft.Azure.Kusto.Tools
.Щелкните правой кнопкой мыши скачанный пакет. В меню выберите средство архивации и извлеките содержимое пакета. Если средство архивации не отображается в меню, выберите Показать дополнительные параметры. При извлечении происходит несколько папок, одна из которых называется tools.
В папке tools находятся разные вложенные папки, обслуживающие разные версии PowerShell. Для PowerShell версии 5.1 используйте папку net472 . Для PowerShell версии 7 или более поздней используйте любую папку версии. Скопируйте путь к соответствующей папке.
В PowerShell загрузите библиотеки, заменив
<path>
скопированным путем к папке:[System.Reflection.Assembly]::LoadFrom("<path>\Kusto.Data.dll")
Должен отобразиться результат, аналогичный приведенному ниже:
глобальный кэш сборок Версия Location Неверно Версия 4.0.30319 C:\Downloads\tools\net472\Kusto.Data.dll
После загрузки можно использовать библиотеки для подключения к кластеру и базе данных.
Подключение к кластеру и базе данных
Проверка подлинности в кластере и базе данных с помощью одного из следующих методов:
- Проверка подлинности пользователей. Предложите пользователю подтвердить свою личность в веб-браузере.
- Проверка подлинности приложения.Создайте приложение MS Entra и используйте учетные данные для проверки подлинности.
- Проверка подлинности Azure CLI. Войдите в Azure CLI на компьютере, и Kusto получит маркер из Azure CLI.
Выберите соответствующую вкладку.
После выполнения первого запроса или команды этот метод откроет интерактивное окно браузера для авторизации пользователя.
$clusterUrl = "<Your cluster URI>"
$databaseName = "<Your database name>"
$kcsb = New-Object Kusto.Data.KustoConnectionStringBuilder($clusterUrl, $databaseName)
Выполнение запроса
Создайте поставщик запросов и запустите язык запросов Kusto запросы.
В следующем примере определяется простой запрос на выборку данных. Чтобы выполнить запрос, замените <TableName>
именем таблицы в базе данных. Перед выполнением запроса класс ClientRequestProperties используется для задания идентификатора запроса клиента и времени ожидания сервера. Затем выполняется запрос, а результирующий набор форматируется и сортируется.
$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
Выходные данные
StartTime | EndTime | EpisodeID | EventID | Состояние | EventType | InjuriesDirect | InjuriesIndirect | DeathsDirect | DeathsIndirect |
---|---|---|---|---|---|---|---|---|---|
2007-12-30 16:00:00 | 2007-12-30 16:05:00 | 11749 | 64588 | Грузия | Шквалистый ветер | 0 | 0 | 0 | 0 |
2007-12-20 07:50:00 | 2007-12-20 07:53:00 | 12554 | 68796 | Миссисипи | Шквалистый ветер | 0 | 0 | 0 | 0 |
2007-09-29 08:11:00 | 2007-09-29 08:11:00 | 11091 | 61032 | ЮЖНО-АТЛАНТИЧЕСКИЕ ШТАТЫ | Воронка воды | 0 | 0 | 0 | 0 |
2007-09-20 21:57:00 | 2007-09-20 22:05:00 | 11078 | 60913 | Флорида | Ураган | 0 | 0 | 0 | 0 |
2007-09-18 20:00:00 | 2007-09-19 18:00:00 | 11074 | 60904 | Флорида | Сильный ливень | 0 | 0 | 0 | 0 |
Выполнение команды управления
Создайте поставщика администрирования CSL и выполните команды управления.
В следующем примере выполняется команда управления для проверка работоспособности кластера.
$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"
Выходные данные
IsHealthy = True
Дополнительные рекомендации по выполнению команд управления с помощью клиентских библиотек Kusto см. в статье Создание приложения для выполнения команд управления.
Пример
В следующем примере демонстрируется процесс загрузки библиотек, проверки подлинности и выполнения запроса в общедоступном 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)
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по