PowerShell ile Azure Policy Definition Detaylarinin Listelenmesi

PowerShell ile Azure Policy Definition Detaylarinin Listelenmesi

Azure Policy’leri “Get-AzPolicyDefinition” komutuyla listelemek istedigimizde maalesef Policy ismini anlasilir bir sekilde gelmiyor.

Bunun icin asagidaki komutu kullanarak “DisplayName” bilgisini yazdirabiliriz.

Get-AzPolicyDefinition | select -ExpandProperty properties | select DisplayName

Continue Reading PowerShell ile Azure Policy Definition Detaylarinin Listelenmesi

PowerShell ile Azure KeyVault icindeki Secret icerigini Yazdirmak

Bir Key Vault icindeki Secret’in icerigini ekrana yazdirmak icin asagidaki komutu kullanabiliriz.

Oncesinde Secret detayini almak istedigimizde ne oluyor ona bakalim. Asagidaki komut bize icerik disinda her seyi veriyor ama Secret icerigi yok.

Buradaki onemli ayrinti “-AsPlainText” parametresi. Bu sayede Secret icerigini okuyabiliyoruz.

Get-AzKeyVaultSecret -VaultName testvault2000 -Name testsecret -AsPlainText

Continue Reading PowerShell ile Azure KeyVault icindeki Secret icerigini Yazdirmak

PowerShell ile Azure Policy’lerin bir Resource Group icin Uygulanmasi

Oncelikle hangi Policy Definition’in uygulanmasini isteidigimize karar verelim. Bunu icin var olan Policy Definition’lari bir listeleyelim.

Get-AzPolicyDefinition | select -ExpandProperty Properties | select displayname

Yukaridaki komutun listeledigi Policy Definition’lardan hangisini uygulayacaksak tam ismini not edelim.

Sonra da ornek “demo” isimli Resource Group uzerinde bu Policy’yi uygulayalim.

Ben kendi ornegimde “Azure Backup should be enabled for Virtual Machines” isimli Policy Definition’i “demo” isimli RG uzerinde uygulayacagim.

$ResourceGroup = Get-AzResourceGroup -Name ‘demo’

$ResourceGroup = Get-AzResourceGroup -Name ‘demo’
$Policy = Get-AzPolicyDefinition | where{$psitem.properties.displayname -eq ‘Azure Backup should be enabled for Virtual Machines’}
New-AzPolicyAssignment -Name ‘VMler uzerinde yedekleme ozelligi acik olsun’ -PolicyDefinition $Policy -scope $ResourceGroup.ResourceId

Continue Reading PowerShell ile Azure Policy’lerin bir Resource Group icin Uygulanmasi

PowerShell ile Mevcut Bir Vnet icine Yeni Bir Address Space ve Subnet Eklemek

Mevcut durumdaki Virtual Network’unuze yeni bir adres blogu eklemek ve bu yeni blok icinden yeni bir subnet olusturmak isterseniz asagiki komutlari kullanabilirsiniz.

$vnet = Get-AzVirtualNetwork -Name hub-vnet -ResourceGroupName hub-network
$vnet.AddressSpace.AddressPrefixes.Add(“20.0.0.0/8”)
$YeniSubnet = New-AzVirtualNetworkSubnetConfig -Name YeniSubnet -AddressPrefix “20.1.2.0/24”
$vnet.Subnets.Add($YeniSubnet)
$vnet | Set-AzVirtualNetwork

Sonuc asagidaki gibi

Continue Reading PowerShell ile Mevcut Bir Vnet icine Yeni Bir Address Space ve Subnet Eklemek

PowerShell ile App Service Metric bilgisini yazdirmak

Ornegin bir rapor hazirlamak istesek.. Bu raporda, butun abonelilklerdeki butun App Service Plan kaynaklarinin (ASP) son 10 gun icindeki Memory ve CPU degerlerinin ortalamasi olsa. Nasil olur? Bence guzel olur. Nasil mi? Iste boyle

$data = @()
$data+=”subname, starttime,endtime,aspname,cpupercentage,memorypercentage”

$startTime = “2021-01-21T00:00”
$endTime = “2021-02-21T00:00”

$subs = (Get-AzSubscription)

foreach($sub in $subs){

select-azsubscription -SubscriptionID $sub.ID

$subname = $sub.name

$ASPs = Get-AzAppServicePlan

foreach($asp in $ASPs){
$ID = $asp.ID
$aspName = $asp.name

$CPUPercentage = (Get-AzMetric -ResourceId “$ID” -TimeGrain 00:01:00 -StartTime $startTime -EndTime $endTime -MetricName “CPUPercentage” -DetailedOutput | select -ExpandProperty data | measure average -Average).AVERAGE

$MemoryPercentage = (Get-AzMetric -ResourceId “$ID” -TimeGrain 00:01:00 -StartTime $startTime -EndTime $endTime -MetricName “MemoryPercentage” -DetailedOutput | select -ExpandProperty data | measure average -Average).AVERAGE

$data += “$subname, $starttime, $endtime, $aspname, $cpupercentage, $memorypercentage”

}

}

$data | ft

$outputstarttime = $startTime.replace(“:”,”“) $outputendtime = $endTime.replace(“:”,”“)
$reportName = “AppService_memory_CPU_raporu”

$outputfilename = “./temp/”+$reportName+”“+$outputstarttime+”“+$outputendtime+”.csv”

$data | out-file $outputfilename

Sonuc asagidaki gibi olur. Tabi benim demo ortamimda sadece 1 tane App Service Plan oldugu icin rapor cok heybetli durmadi 🙂

Continue Reading PowerShell ile App Service Metric bilgisini yazdirmak

PowerShell ile Log Analytics Workspace Verilerini Sorgulamak

PowerShell ile bir Log Analytics Workspace icindeki veriyi alabiliriz. Bunun icin asagidaki KQL sorgusunu PowerShell ile gonderip gelen sonucu okuyabiliriz.

Oncelikle WorkspaceID bilgisine ihtiyacimiz var. Bunun icin CustomerID bilgisini aliyoruz. Sonrasinda sorgu icerigimizi olusturup “Invoke-AzOperationalInsightsQuery” komutuyla gonderiyoruz. Ben kendi ornegimde son 2 saat icindeki Azure aktivitelerini type, ResourceProvider ve CallerIP adresine gore listeletmek istedim.

$LAWorkspaceID = (Get-AzOperationalInsightsWorkspace -Name la01 -ResourceGroupName loganalytics).customerId

$Sorgu = @’

AzureActivity
| where TimeGenerated > ago(2h)
| order by TimeGenerated desc
| project CallerIpAddress,ResourceProviderValue,Type

‘@

$Results = Invoke-AzOperationalInsightsQuery -WorkspaceId $LAWorkspaceID -Query $sorgu
$Results.results

Continue Reading PowerShell ile Log Analytics Workspace Verilerini Sorgulamak

PowerShell ile Azure WebApp HTTP Log’larini Log Analytics Workspace Icerisine Gondermek

Bir WebApp uzerinde “AppServiceHTTPLogs” loglarini toplayarak Log Analytics Workspace icerisine gondermek istiyorsunuz. Bunu PowerShell nasil yaparsiniz? Boyle!

Set-AzDiagnosticSetting -ResourceId "/subscriptions/xxxxxxxxxx-xxxxx-xxxx-xxxxxxxx-/resourceGroups/RG1/providers/Microsoft.Web/sites/test7823492"
-Name AppLogs -Category AppServiceHTTPLogs -WorkspaceId "/subscriptions/XXXXXXX-XXXXXX-XXXXX-XXX/resourceGroups/DefaultResourceGroup-WEU/providers/Microsoft.OperationalInsights/workspaces/DefaultWorkspace-26c3cd8b-WEU"
-Enabled $true

Komutu calistirdiktan sonra App uzerindeki Diagnostics Setting bolumunden “AppLog” ismiyle aktive ettigimiz log ayarlarini goruntuleyebilirsiniz. Belirledigimiz Log Analytics Workspace bilgisi de yine portal icerisinde goruntulendi.

Continue Reading PowerShell ile Azure WebApp HTTP Log’larini Log Analytics Workspace Icerisine Gondermek

PowerShell ile Azure Storage Account Icerisine Dosya Yuklemek

Once Context olusturmaliyiz ki hangi Storage Account icinde islem yapacagimiz belli olsun. Access Key’i Portal icinden almayi unutmayin. Isterseniz PowerShell ile de edinebilirsiniz. Akabinde asagidaki komutlarla dosya yukleme islemini gerceklestirebiliriz.

ve Portal’dan bu islemi dogrulayabilirsiniz

Continue Reading PowerShell ile Azure Storage Account Icerisine Dosya Yuklemek

PowerShell ile bir Azure Aboneliginin Ismini Degistirmek

Azure aboneliklerinin gorunen ismini degistirebilirsiniz. Elbette SubscriptionID sabit kalacaktir ancak gorunun isim degisecektir. Bu sayede abonelikler uzerinde calisirken ya da bir abonelikten bir digerine gecerken ID bilgisini aklinizda tutmaniza gerek kalmadan basit bir isim ile ayni gorevleri yerine getirebilirsiniz.

Bunun icin asagidaki kodu kullanabilirsiniz. Ben tanimladigim aboneligin ismini “Lab2” olarak degistirecegim.

$token = (Get-AzAccessToken).token

$body = @{
“subscriptionName”= “Lab2”
} | convertto-json

$headers = @{
Authorization = “Bearer $token”
}

$uri = “https://management.azure.com/subscriptions/xxxxxx-xxxxxxx-xxxxx-xxxx/providers/Microsoft.Subscription/rename?api-version=2020-09-01”

Invoke-RestMethod -method POST -content “application/json” -uri $uri -body $body -header $headers

Continue Reading PowerShell ile bir Azure Aboneliginin Ismini Degistirmek