PowerShell ile Azure Subscription Offer bilgisini goruntulemek

PowerShell ile Azure Subscription Offer bilgisini goruntulemek

Azure uzerindeki abonliklerinizin “Offer” bilgisini Portal icinden asagidaki gibi goruntuleyebiliyoruz.

Peki bu bilgiye PowerShell ile nasil erisebiliriz?

Get-AzSubscription | select -ExpandProperty SubscriptionPolicies

Subscription Policies altindaki QutaId sutunu bu bilgiyi tutar. MSDN, PayAsYouGo vs. gibi bilgiler burada listelenir.

Continue Reading PowerShell ile Azure Subscription Offer bilgisini goruntulemek

PowerShell ile Azure Key Vault Access Policy Yonetimi

Bir Azure Key Vault icindeki Access Policy’lerde degisiklik yaparak, bir kisiye, gruba ya da uygulamaya erisim yetkisi verebiliriz. Bunun icin asagidaki komutu calistirabiliriz. Ben kendi ornegimde octopus adindaki Azure AD uygulamama yetki vermek istedim. Secret, Certificate, Keys ve Managed Storage uzerinde “full” yetki verdim. Evet biraz bonkor davrandim bugun!

Siz de ServicePrincipalName parametresi icin kendi AAD uygulamanizin ApplicationID’sini yazabilirsiniz.

Set-AzKeyVaultAccessPolicy -VaultName testvault2000 -ResourceGroupName keyvaults -ServicePrincipalName “c2e46ff8-cdc6-4c0b-a593-74fcda3657aa” -PermissionsToKeys all -PermissionsToSecrets all -PermissionsToCertificates all -PermissionsToStorage all

Asagidaki komutla yaptigim degisikligi goruntuleyebilirim

Get-AzKeyVault -VaultName testvault2000

Azure Portal icinden de bu degisikligi dogrulayabiliriz.

Continue Reading PowerShell ile Azure Key Vault Access Policy Yonetimi

PowerShell ile Mevcut Bir Automation Account Icerisine Yeni Bir Runbook Eklemek

Yeni bir Runbook ihtiyaciniz var. Bir de daha onceden yazdiginiz kodun Runbook icinde calismasini istiyorsunuz. Kolay.

Import-AzAutomationRunbook -ResourceGroupName demo
-AutomationAccountName AuatomationAccount1 -Path "D:\Temp\runbook1.ps1"
-Type PowerShell -Name YeniRunbook
-Force

Unutmayalim ki, yukaridaki komut bir Import komutu. Yani aslinda yeni bir runbook olusturmaktan tek farki, size daha onceden yazdiginioz kodu ekleme olanagi vermesi. Yani ayni isimle bos bir runbook olusturma komutunu kullansam hata alirim. Hatta buyrun hata alalim.

New-AzAutomationRunbook -Name 'YeniRunbook'
-Type PowerShell -ResourceGroupName demo
-Description ‘Yepisyeni’ `
-AutomationAccountName AuatomationAccount1

Continue Reading PowerShell ile Mevcut Bir Automation Account Icerisine Yeni Bir Runbook Eklemek

PowerShell ile Azure Management Group altindaki Abonelikleri Listelemek

PowerShell ile Azure Management Group altindaki Abonelikleri Listelemek

Azure icindeki abonelikleri, yonetimsel kolaylik ve Policy uygulama noktasindaki avantajlari sebebiyle Management Group’lar icine yerlestirebiliyoruz. Peki buyuk organizasyonlarda Azure Portal icinden rahatlikla listeyebildigimiz bu abonelikleri PowerShell ile nasil listeyebiliriz? Yani belirli bir Management Group icindeki abonelikleri nasil ekrana yazdirabiliriz? Gorelim!

Once butun abonelikleri, icinde bulunduklari Management Group bilgisine gore listeleyelim. Malum, bazen ic ice gecmis management group yapisi kullaniyoruz ve bir abonelik derinlerde bir management group icinde yer alabiliyor.

$sorgu = “
resourcecontainers
| where type == ‘microsoft.resources/subscriptions’

$cevap = Search-AzGraph -Query $sorgu
$cevap | select name,id,@{l=”managementgroup”;e={$_.properties.managementGroupAncestorsChain.displayname}}

Peki ben sadece spesifik Manegement Group icindeki abonelikleri goruntulemek istiyorsam. Yani bana yukaridan asagiya kadar butun management group bilgisi lazim degilse? O zaman da yontem su sekilde!

$managementGroup = “Prod”
$sorgu = “
resourcecontainers
| where type == ‘microsoft.resources/subscriptions’
| where properties.managementGroupAncestorsChain[0].displayName == ‘$managementGroup’
| project ParentManagementGroup = properties.managementGroupAncestorsChain[0].displayName, name, id

$cevap = Search-AzGraph -Query $sorgu
$cevap | select name, id, ParentManagementGroup

Continue Reading PowerShell ile Azure Management Group altindaki Abonelikleri Listelemek

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