Aracılığıyla paylaş


Windows için Özel Komut Dosyası Uzantısı

Özel Betik Uzantısı, Azure sanal makinelerinde (VM) betikleri indirir ve çalıştırır. Dağıtım sonrası yapılandırma, yazılım yüklemesi veya başka bir yapılandırma veya yönetim görevi için bu uzantıyı kullanın. Betikleri Azure Depolama veya GitHub'dan indirebilir veya uzantı çalışma zamanında Azure portalına sağlayabilirsiniz.

Özel Script Uzantısı, Azure Resource Manager şablonlarıyla tümleşir. Azure CLI, Azure PowerShell, Azure portalı veya Azure Sanal Makineler REST API'sini kullanarak da çalıştırabilirsiniz.

Bu makalede, Azure PowerShell modülünü ve Azure Resource Manager şablonlarını kullanarak Özel Betik Uzantısı'nın nasıl kullanılacağı açıklanmaktadır. Ayrıca Windows sistemleri için sorun giderme adımları sağlar.

Not

Daha hızlı tanılama için VM yardımını deneyin. Windows için VM yardımını veya Linux için VM yardımını çalıştırmanızı öneririz. Bu betik tabanlı tanılama araçları, Azure VM Konuk Aracısı'nı ve genel VM durumunu etkileyen yaygın sorunları belirlemenize yardımcı olur.

Önkoşullar

Not

Parametresi olarak aynı VM'i kullanarak Update-AzVM çalıştırmak için Özel Betik Uzantısı'nı kullanmayın. Uzantı kendi hazır hale gelmesini bekler.

Desteklenen Windows işletim sistemleri

İşletim Sistemi Sürümü x64 ARM64
Windows 10 Desteklenir Desteklenir
Windows 11 Desteklenir Desteklenir
Windows Server 2016 Desteklenir Desteklenir
Windows Server 2016 Core Desteklenir Desteklenir
Windows Server 2019 Desteklenir Desteklenir
Windows Server 2019 Core Desteklenir Desteklenir
Windows Sunucusu 2022 Desteklenir Desteklenir
Windows Server 2022 Core Desteklenir Desteklenir
Windows Server 2025 Desteklenir Desteklenir
Windows Server 2025 Core Desteklenir Desteklenir

Betik konumu

Uzantıyı Azure Blob Depolama'ya erişebilmesi için Azure Blob Depolama kimlik bilgilerinizi kullanacak şekilde ayarlayabilirsiniz. Sanal makine, GitHub veya dahili dosya sunucusu gibi bu uç noktaya yönlendirebildiği sürece betiğin konumu herhangi bir yer olabilir.

İnternet bağlantısı

Betiği GitHub veya Azure Depolama gibi bir dış konumdan indirmek için diğer güvenlik duvarı veya ağ güvenlik grubu (NSG) bağlantı noktalarını açmanız gerekir. Örneğin, betiğiniz Azure Depolama'da bulunuyorsa Depolama için Azure NSG hizmet etiketlerini kullanarak erişime izin verebilirsiniz.

Özel Betik Uzantısı'nın sertifika doğrulamasını atlaması mümkün değildir. Güvenli bir konumdan , örneğin otomatik olarak imzalanan bir sertifikayla indiriyorsanız, doğrulama yordamına göre uzak sertifika geçersiz gibi hatalar alabilirsiniz. Sertifikanın VM'deki Güvenilen Kök Sertifika Yetkilileri deposuna doğru yüklendiğinden emin olun.

Betiğiniz yerel bir sunucuda olsa bile, diğer güvenlik duvarı veya Ağ Güvenlik Grubu (NSG) bağlantı noktalarını açmanız gerekebilir.

İpuçları

  • Çıkış son 4.096 baytla sınırlıdır.
  • Karakterlerden uygun şekilde kaçınılması, dizgilerin doğru şekilde ayrıştırılmasını sağlar. Örneğin, dosya yollarıyla ilgilenirken tek bir değişmez değer ters eğik çizgiden kurtulmak için her zaman iki ters eğik çizgiye ihtiyacınız vardır. Örnek: {"commandToExecute": "C:\\Windows\\System32\\systeminfo.exe >> D:\\test.txt"}
  • Bu uzantı için en yüksek hata oranı betikteki söz dizimi hatalarından kaynaklanır. Betiğin hatasız çalıştığını doğrulayın. Hataları bulmayı kolaylaştırmak için betiğe daha fazla günlük kaydı ekleyin.
  • Betiklerin birden fazla çalıştırılmasının yanlışlıkla sistem değişikliklerine neden olmasını önlemek için idempotent betikler yazın.
  • Betiklerin çalışırken kullanıcı girişi gerektirmediğinden emin olun.
  • Betiğin 90 dakika çalışmasına izin verilir. Daha uzun olan herhangi bir şey uzantının sağlanamamasına neden olur.
  • Komut dosyasının içine yeniden başlatmalar yerleştirmeyin. Bu eylem, yüklenen diğer uzantılarla ilgili sorunlara neden olur ve uzantı yeniden başlatıldıktan sonra devam etmez.
  • Uygulamaları yüklemeden ve betikleri çalıştırmadan önce yeniden başlatmaya neden olan bir betiğiniz varsa, Windows Zamanlanmış Görevi’ni veya DSC, Chef ya da Puppet uzantıları gibi araçları kullanarak yeniden başlatmayı zamanlayın.
  • VM aracısının durdurulmasına veya güncelleştirilmesine neden olan bir betik çalıştırmayın. Bu, uzantıyı geçiş durumunda bırakabilir ve zaman aşımına neden olabilir.
  • Uzantı bir betiği yalnızca bir kez çalıştırır. Her başlangıçta bir betik çalıştırmak istiyorsanız, bir Windows Zamanlanmış Görevi oluşturmak için uzantıyı kullanın.
  • Betiğin çalıştırılacağı zamanı belirlemek istiyorsanız uzantıyı kullanarak bir Windows Zamanlanmış Görevi oluşturun.
  • Betik çalıştığında, Azure portal veya Azure CLI üzerinden yalnızca geçiş uzantı durumunu görürsünüz. Çalışan bir betikle ilgili daha sık durum güncelleştirmesi almak isterseniz kendi çözümünüzü oluşturun.
  • Özel Betik Uzantısı, ara sunucuları doğal olarak desteklemez. Bununla birlikte betiğinizin içinde ara sunucuları destekleyen Invoke-WebRequest gibi bir dosya aktarım aracı kullanabilirsiniz.
  • Betiklerinizin veya komutlarınızın kullanıyor olabileceği varsayılan olmayan dizin konumlarına dikkat edin. Bu durumla başa çıkmak için bir mantık oluşturun.
  • Kayıt defteri anahtarında HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun herhangi bir özel ayar olmadığından emin olun (burada ayrıntılı olarak anlatılır). Bu, Özel Betik Uzantısı yüklelendikten veya etkinleştirildiği aşamalar sırasında tetiklenir ve 'XYZ is not recognized as an internal or external command, operable program or batch file' gibi bir hataya neden olur.
  • Özel Betik Uzantısı LocalSystem hesabının altında çalışır.
  • storageAccountName ve storageAccountKey özelliklerini kullanmayı planlıyorsanız bu özelliklerin protectedSettings konumunda birlikte bulunması gerekir.
  • Sanal makineye bir uzantının yalnızca bir sürümünü uygulayabilirsiniz. İkinci bir özel betik çalıştırmak için mevcut uzantıyı yeni bir yapılandırmayla güncelleştirebilirsiniz. Alternatif olarak, özel betik uzantısını kaldırabilir ve güncelleştirilmiş betikle yeniden uygulayabilirsiniz

Uzantı şeması

Özel Betik Uzantısı yapılandırması, betik konumu ve çalıştırılacak komut gibi öğeleri belirtir. Bu yapılandırmayı yapılandırma dosyalarında depolayabilir, komut satırında belirtebilir veya bir Azure Resource Manager şablonunda belirtebilirsiniz.

Hassas verileri korumalı bir yapılandırmada depolayabilirsiniz. Bu yapılandırma yalnızca VM içinde şifrelenir ve şifresi çözülür. Korumalı yapılandırma, yürütme komutu parola veya paylaşılan erişim imzası (SAS) dosya başvurusu gibi gizli diziler içerdiğinde yararlıdır. Bir örnek aşağıda verilmiştir:

{
    "apiVersion": "2018-06-01",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "virtualMachineName/config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
        "[variables('musicstoresqlName')]"
    ],
    "tags": {
        "displayName": "config-app"
    },
    "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.10",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "timestamp":123456789
        },
        "protectedSettings": {
            "commandToExecute": "myExecutionCommand",
            "storageAccountName": "myStorageAccountName",
            "storageAccountKey": "myStorageAccountKey",
            "managedIdentity" : {},
            "fileUris": [
                "script location"
            ]
        }
    }
}

Not

managedIdentity özelliği veya storageAccountName özelliği ile birlikte kullanılmamalıdır.

Bir kerede bir VM'ye uzantının yalnızca bir sürümü yüklenebilir. Aynı VM için aynı Azure Resource Manager şablonunda iki kez özel betik belirtme başarısız olur.

Bu şemayı VM kaynağı içinde veya tek başına kaynak olarak kullanabilirsiniz. Bu uzantı Azure Resource Manager şablonunda tek başına kaynak olarak kullanılıyorsa, kaynağın adı virtualMachineName/extensionName biçiminde olmalıdır.

Özellik değerleri

Adı Değer veya örnek Veri türü
apiVersiyonu 2018-06-01 tarih
yayınevi Microsoft.Compute Dize
Tip CustomScriptExtension Dize
tipİşleyiciVersiyonu 1.10 Int
dosyaURI'leri https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1 dizi
Tarih damgası 123456789 32 bit tamsayı
Çalıştırılacak Komut powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 Dize
depolamaHesapAdi examplestorageacct Dize
depolamaHesapAnahtarı TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== Dize
yönetilenKimlik { } veya { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444" } veya { "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" } JSON nesnesi

Not

Bu özellik adları büyük/küçük harfe duyarlıdır. Dağıtım sorunlarını önlemek için burada gösterildiği gibi adları kullanın.

Özellik değeri ayrıntıları

Mülk İsteğe bağlı veya gerekli Ayrıntılar
dosyaURI'leri İsteğe bağlı İndirilecek dosyaların URL'leri. URL'ler hassassa, örneğin anahtar içeriyorsa, bu alan içinde protectedSettingsbelirtilmelidir.
Çalıştırılacak Komut Zorunlu Çalıştırılacak olan giriş noktası betiği. Komutunuz parolalar gibi gizli diziler içeriyorsa veya dosya URI'leriniz hassassa bu özelliği kullanın.
Tarih damgası İsteğe bağlı Bu değeri yalnızca betiğin yeniden çalıştırılmasını tetikleecek şekilde değiştirin. Herhangi bir tamsayı değeri, önceki değerden farklı olduğu sürece kabul edilebilir.
depolamaHesapAdi İsteğe bağlı Depolama hesabının adı. Depolama kimlik bilgilerini belirtirseniz tüm fileUris değerlerin Azure blobları için URL'ler olması gerekir.
depolamaHesapAnahtarı İsteğe bağlı Depolama hesabının erişim anahtarı.
yönetilenKimlik İsteğe bağlı Dosyaları indirmek için yönetilen kimlik. Geçerli değerler, clientId yönetilen kimliğin istemci kimliği olan (isteğe bağlı, dize) ve objectId yönetilen kimliğin nesne kimliği olan (isteğe bağlı, dize) değerleridir.

Genel ayarlar , betiğin çalıştığı VM'ye düz metin olarak gönderilir. Korumalı ayarlar yalnızca Azure ve VM tarafından bilinen bir anahtar aracılığıyla şifrelenir. Ayarlar vm'ye gönderildikçe kaydedilir. Başka bir ifadeyle, ayarlar şifrelendiyse, şifreli olarak VM'ye kaydedilir. Şifrelenmiş değerlerin şifresini çözmek için kullanılan sertifika VM'de depolanır. Sertifika, gerekirse çalışma zamanında ayarların şifresini çözmek için de kullanılır.

Genel ayarları kullanmak hata ayıklama için yararlı olabilir, ancak korumalı ayarları kullanmanızı öneririz.

Genel veya korumalı ayarlarda aşağıdaki değerleri ayarlayabilirsiniz. Uzantı, bu değerlerin hem genel hem de korumalı ayarlarda ayarlandığı tüm yapılandırmaları reddeder.

  • commandToExecute
  • fileUris

Özellik: managedIdentity

Not

Bu özellik yalnızca korumalı ayarlarda belirtilmelidir .

Sürüm 1.10 ve üzeri olan Özel Betik Uzantısı, ayarda sağlanan URL'lerden dosya indirmek için yönetilen kimliklerifileUris. Özellik, kullanıcının SAS belirteçleri veya depolama hesabı anahtarları gibi gizli bilgileri aktarmasına gerek kalmadan, Custom Script Extension'ın Azure Storage özel bloblarına veya kapsayıcılarına erişmesine olanak tanır.

Not

Özel Betik Uzantısı şu anda Azure Arc özellikli sunucularda Yönetilen Kimlik kimlik doğrulamasının kullanılmasını desteklememektedir.

Bu özelliği kullanmak için, Özel Betik Uzantısı'nın çalıştığı VM'ye veya Sanal Makine Ölçek Kümesine sistem tarafından atanan veya kullanıcı tarafından atanan bir kimlik ekleyin. Ardından yönetilen kimliğe Azure Depolama kapsayıcısına veya bloba erişim verin.

Hedef VM veya Sanal Makine Ölçek Kümesinde sistem tarafından atanan kimliği kullanmak için boş bir JSON nesnesine ayarlayın managedidentity .

{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.ps1"],
  "commandToExecute": "powershell.exe script1.ps1",
  "managedIdentity" : {}
}

Hedef VM veya Sanal Makine Ölçek Kümesinde kullanıcı tarafından atanan kimliği kullanabilmek için, managedidentity'ü yönetilen kimliğe ait istemci kimliği veya nesne kimliği ile yapılandırın.

{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.ps1"],
  "commandToExecute": "powershell.exe script1.ps1",
  "managedIdentity" : { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444" }
}
{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.ps1"],
  "commandToExecute": "powershell.exe script1.ps1",
  "managedIdentity" : { "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }
}

Not

managedIdentity özelliği veya storageAccountName özelliği ile birlikte kullanılmamalıdır.

Şablon dağıtımı

Azure Resource Manager şablonlarını kullanarak Azure VM uzantılarını dağıtabilirsiniz. Önceki bölümde ayrıntılarıyla belirtilen JSON şeması, bir Azure Resource Manager şablonunda, şablonun dağıtımı sırasında Özel Betik Uzantısı'nı çalıştırmak için kullanılabilir. Aşağıdaki örneklerde Özel Betik Uzantısının nasıl kullanılacağı gösterilmektedir:

PowerShell dağıtımı

Özel Betik Uzantısı'nı mevcut bir sanal makineye eklemek için Set-AzVMCustomScriptExtension komutunu kullanabilirsiniz. Daha fazla bilgi için bkz . Set-AzVMCustomScriptExtension.

Set-AzVMCustomScriptExtension -ResourceGroupName <resourceGroupName> `
    -VMName <vmName> `
    -Location myLocation `
    -FileUri <fileUrl> `
    -Run 'myScript.ps1' `
    -Name DemoScriptExtension

Örnekler

Birden çok betik kullanma

Bu örnekte sunucunuzu oluşturmak için üç betik kullanılır. commandToExecute özelliği ilk betiği çağırır. Ardından diğerlerinin nasıl çağrıldığıyla ilgili seçenekleriniz vardır. Örneğin, doğru hata işleme, günlüğe kaydetme ve durum yönetimi ile yürütmeyi denetleyen bir ana betiğiniz olabilir. Betikler çalıştırılacak yerel makineye indirilir.

Örneğin, 1_Add_Tools.ps1'deki betiğe ekleyerek .\2_Add_Features.ps1'i çağırırsınız. içinde tanımladığınız $settingsdiğer betikler için bu işlemi yineleyin.

$fileUri = @("https://xxxxxxx.blob.core.windows.net/buildServer1/1_Add_Tools.ps1",
"https://xxxxxxx.blob.core.windows.net/buildServer1/2_Add_Features.ps1",
"https://xxxxxxx.blob.core.windows.net/buildServer1/3_CompleteInstall.ps1")

$settings = @{"fileUris" = $fileUri};

$storageAcctName = "xxxxxxx"
$storageKey = "1234ABCD"
$protectedSettings = @{"storageAccountName" = $storageAcctName; "storageAccountKey" = $storageKey; "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File 1_Add_Tools.ps1"};

#run command
Set-AzVMExtension -ResourceGroupName <resourceGroupName> `
    -Location <locationName> `
    -VMName <vmName> `
    -Name "buildserver1" `
    -Publisher "Microsoft.Compute" `
    -ExtensionType "CustomScriptExtension" `
    -TypeHandlerVersion "1.10" `
    -Settings $settings `
    -ProtectedSettings $protectedSettings;

Betikleri yerel paylaşımdan çalıştırma

Bu örnekte, betik konumunuz için yerel bir Sunucu İleti Bloğu (SMB) sunucusu kullanmak isteyebilirsiniz. Ardından commandToExecute haricinde başka bir ayar sağlamanız gerekmez.

$protectedSettings = @{"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File \\filesvr\build\serverUpdate1.ps1"};

Set-AzVMExtension -ResourceGroupName <resourceGroupName> `
    -Location <locationName> `
    -VMName <vmName> `
    -Name "serverUpdate"
    -Publisher "Microsoft.Compute" `
    -ExtensionType "CustomScriptExtension" `
    -TypeHandlerVersion "1.10" `
    -ProtectedSettings $protectedSettings

CLI kullanarak özel betiği birden çok kez çalıştırma

Özel Betik Uzantısı işleyicisi, aynı ayarlar tam olarak geçirilmişse betiğin yeniden çalıştırılmasını engeller. Bu davranış yanlışlıkla yeniden çalıştırmayı önler ve betik idempotent değilse beklenmeyen davranışlara neden olabilir. İşleyicinin yeniden çalıştırmayı engelleyip engellemediğini onaylamak için bölümüne bakın C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\<HandlerVersion>\CustomScriptHandler.log*. Şu türden bir uyarı aranıyor:

Current sequence number, <SequenceNumber>, is not greater than the sequence number
of the most recently executed configuration. Exiting...

Özel Betik Uzantısı'nı birden çok kez çalıştırmak istiyorsanız, bunu yalnızca şu koşullar altında yapabilirsiniz:

  • Uzantının Name parametresi, uzantının önceki dağıtımıyla aynıdır.
  • Yapılandırmayı güncelleştirdiniz. Komutuna zaman damgası gibi bir dinamik özellik ekleyebilirsiniz. İşleyici yapılandırma ayarlarında bir değişiklik algılarsa, bu değişikliği betiği yeniden çalıştırmak için açık bir istek olarak değerlendirir.

Alternatif olarak, ForceUpdateTag.

Invoke-WebRequest'i kullanma

Betiğinizde Invoke-WebRequest kullanıyorsanız parametresini -UseBasicParsingbelirtmeniz gerekir. Parametresini belirtmezseniz, ayrıntılı durumu denetlerken aşağıdaki hatayı alırsınız:

The response content cannot be parsed because the Internet Explorer engine
is not available, or Internet Explorer's first-launch configuration
is not complete. Specify the UseBasicParsing parameter and try again.

Sanal Makine Ölçek Kümeleri

Özel Betik Uzantısı'nı Azure portalından dağıtırsanız, depolama hesabınızdaki betiklere erişmek için SAS belirtecinin süresinin dolması üzerinde denetiminiz yoktur. İlk dağıtım çalışır, ancak depolama hesabının SAS belirtecinin süresi dolduğunda, Özel Betik Uzantısı artık depolama hesabına erişemediğinden sonraki ölçeklendirme işlemleri başarısız olur.

Özel Betik Uzantısını bir Sanal Makine Ölçek Kümesine dağıtırken PowerShell, Azure CLI veya Azure Resource Manager şablonu kullanmanızı öneririz. Bu şekilde, yönetilen kimlik kullanmayı seçebilir veya ihtiyacınız olduğu sürece depolama hesabınızdaki script'e erişmek için SAS belirtecinin süresini doğrudan kontrol altında tutabilirsiniz.

Sorun giderme ve destek

Azure portalından ve Azure PowerShell modülünü kullanarak uzantı dağıtımlarının durumuyla ilgili verileri alabilirsiniz. Bir VM için uzantıların dağıtım durumunu görmek için aşağıdaki komutu çalıştırın:

Get-AzVMExtension -ResourceGroupName <resourceGroupName> `
    -VMName <vmName> -Name myExtensionName

Uzantı çıkışı, hedef sanal makinede aşağıdaki klasörün altında bulunan dosyalara kaydedilir:

C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension

Belirtilen dosyalar hedef sanal makinede aşağıdaki klasöre indirilir:

C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>

Yukarıdaki yolda, <n> uzantının yürütmeleri arasında değişebilen ondalık bir tamsayıdır. Değer 1.* , uzantının gerçek, geçerli typeHandlerVersion değeriyle eşleşir. Örneğin, gerçek dizin C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2 olabilir.

Komutu çalıştırdığınızda commandToExecute uzantı, bu dizini, örneğin ...\Downloads\2, geçerli çalışma dizini olarak ayarlar. Bu işlem, fileURIs özelliğini kullanarak indirilen dosyaları bulmamıza olanak tanıyan göreli yolların kullanılmasını sağlar. İndirilen dosya örnekleri şunlardır:

fileUris içinde URI Göreli indirme konumu Mutlak indirme konumu
https://someAcct.blob.core.windows.net/aContainer/scripts/myscript.ps1 ./scripts/myscript.ps1 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2\scripts\myscript.ps1
https://someAcct.blob.core.windows.net/aContainer/topLevel.ps1 ./topLevel.ps1 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2\topLevel.ps1

Mutlak dizin yolları VM'nin ömrü boyunca değişir, ancak Özel Betik Uzantısı'nın tek bir yürütmesi içinde değişmez.

Mutlak indirme yolu zaman içinde farklılık gösterebileceğinden, mümkün olduğunca commandToExecute kod bloğunda göreli betik/dosya yollarını tercih etmek daha iyidir. Örneğin:

"commandToExecute": "powershell.exe . . . -File \"./scripts/myscript.ps1\""

özellik listesi kullanılarak indirilen dosyalar için ilk URI kesiminden fileUris sonraki yol bilgileri tutulur. Önceki tabloda gösterildiği gibi, indirilen dosyalar, değerlerin fileUris yapısını yansıtmak için indirme alt dizinleriyle eşlenir.

Destek

  • Bu makalenin herhangi bir bölümüyle ilgili yardıma ihtiyacınız varsa Azure Topluluk Desteği'ndeki Azure uzmanlarına başvurun.

  • Azure destek talebi oluşturmak için Azure destek sitesine gidin ve Destek Al'ı seçin.

  • Azure desteği kullanma hakkında bilgi için Microsoft Azure desteği SSS bölümünü okuyun.