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:
dosyasını indirin
Microsoft.Azure.Kusto.Tools
.İ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.
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.
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)
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin