PowerShell'den Kusto .NET istemci kitaplıklarını kullanma

PowerShell, .NET kitaplıklarıyla doğal olarak tümleştirdiği için PowerShell betikleri Kusto istemci kitaplıklarını kullanabilir. Bu makalede, sorguları ve yönetim komutlarını çalıştırmak için istemci kitaplıklarını yüklemeyi ve kullanmayı öğreneceksiniz.

Önkoşullar

  • 7-Zip veya WinRAR gibi zip dosyalarını ayıklamak için bir arşivleme aracı.

Kitaplıkları alma

PowerShell'de Kusto .NET istemci kitaplıklarını kullanmak için:

  1. dosyasını indirin Microsoft.Azure.Kusto.Tools.

  2. İndirilen pakete sağ tıklayın. Menüden arşivleme aracınızı seçin ve paket içeriğini ayıklayın. Arşivleme aracı menüden görünmüyorsa Diğer seçenekleri göster'i seçin. Ayıklama işlemi birden çok klasöre neden olur ve bunlardan biri araçlar olarak adlandırılır.

  3. Araçlar klasörünün içinde, farklı PowerShell sürümlerine uygun farklı alt klasörler vardır. PowerShell sürüm 5.1 için net472 klasörünü kullanın. PowerShell sürüm 7 veya üzeri için sürüm klasörlerinden herhangi birini kullanın. İlgili klasörün yolunu kopyalayın.

  4. PowerShell'den kitaplıkları yükleyin ve yerine <path> kopyalanan klasör yolunu yazın:

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

    Aşağıdakine benzer bir çıktı görmeniz gerekir:

    GAC Sürüm Konum
    Yanlış v4.0.30319 C:\Downloads\tools\net472\Kusto.Data.dll

Yüklendikten sonra, bir kümeye ve veritabanına bağlanmak için kitaplıkları kullanabilirsiniz.

Kümeye ve veritabanına bağlanma

Aşağıdaki yöntemlerden biriyle kümede ve veritabanında kimlik doğrulaması yapın:

  • Kullanıcı kimlik doğrulaması: Kullanıcıdan kimliğini bir web tarayıcısında doğrulamasını iste.
  • Uygulama kimlik doğrulaması:BIR MS Entra uygulaması oluşturun ve kimlik doğrulaması için kimlik bilgilerini kullanın.
  • Azure CLI kimlik doğrulaması: Makinenizde Azure CLI'da oturum açtığınızda Kusto, belirteci Azure CLI'dan alır.

İlgili sekmeyi seçin.

İlk sorgunuzu veya komutu çalıştırdıktan sonra, bu yöntem kullanıcı yetkilendirmesi için etkileşimli bir tarayıcı penceresi açar.

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

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

Sorgu çalıştırma

Sorgu sağlayıcısı oluşturun ve Kusto Sorgu Dili sorguları çalıştırın.

Aşağıdaki örnek, verileri örneklemek için basit bir alma sorgusu tanımlar. Sorguyu çalıştırmak için değerini veritabanınızdaki bir tablonun adıyla değiştirin <TableName> . Sorgu çalıştırılmadan önce clientRequestProperties sınıfı bir istemci istek kimliği ve sunucu zaman aşımı ayarlamak için kullanılır. Ardından sorgu çalıştırılır ve sonuç kümesi biçimlendirilir ve sıralanır.

$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

Çıkış

StartTime EndTime Bölüm Kimliği EventID Durum Olay türü YaralanmalarDirect YaralanmalarIndirect DeathsDirect DeathsIndirect
2007-12-30 16:00:00 2007-12-30 16:05:00 11749 64588 GÜRCİSTAN Fırtına Rüzgarı 0 0 0 0
2007-12-20 07:50:00 2007-12-20 07:53:00 12554 68796 MİSSİSSİPPİ Fırtına Rüzgarı 0 0 0 0
2007-09-29 08:11:00 2007-09-29 08:11:00 11091 61032 ATLANTIK GÜNEY Su spout 0 0 0 0
2007-09-20 21:57:00 2007-09-20 22:05:00 11078 60913 FLORİDA Kasırga 0 0 0 0
2007-09-18 20:00:00 2007-09-19 18:00:00 11074 60904 FLORİDA Şiddetli Yağmur 0 0 0 0

Yönetim komutu çalıştırma

CSL yönetici sağlayıcısı oluşturun ve yönetim komutlarını çalıştırın.

Aşağıdaki örnek, kümenin durumunu denetlemek için bir yönetim komutu çalıştırır.

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

Çıkış

IsHealthy = True

Kusto istemci kitaplıklarıyla yönetim komutlarını çalıştırma hakkında daha fazla kılavuz için bkz. Yönetim komutlarını çalıştırmak için uygulama oluşturma.

Örnek

Aşağıdaki örnek kitaplıkları yükleme, kimlik doğrulama ve genel olarak erişilebilen help kümede sorgu yürütme işlemini gösterir.

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