Windows PowerShell betiklerini kullanarak geliştirme ve test ortamlarına yayımlama

Visual Studio'da bir web uygulaması oluşturduğunuzda, daha sonra web sitenizin Azure Uygulaması Service'te veya sanal makinede Web Uygulaması olarak Azure'da yayımlanmasını otomatikleştirmek için kullanabileceğiniz bir Windows PowerShell betiği oluşturabilirsiniz. Visual Studio düzenleyicisinde Windows PowerShell betiğini gereksinimlerinize uyacak şekilde düzenleyebilir ve genişletebilir veya betiği mevcut derleme, test ve yayımlama betikleriyle tümleştirebilirsiniz.

Bu betikleri kullanarak sitenizin özelleştirilmiş sürümlerini (geliştirme ve test ortamları olarak da bilinir) geçici kullanım için sağlayabilirsiniz. Örneğin, test paketini çalıştırmak, bir hatayı yeniden oluşturmak, hata düzeltmesini test etmek, önerilen bir değişikliği denemek veya tanıtım veya sunu için özel bir ortam ayarlamak için web sitenizin belirli bir sürümünü bir Azure sanal makinesinde veya bir web sitesindeki hazırlama yuvasında ayarlayabilirsiniz. Projenizi yayımlayan bir betik oluşturduktan sonra, betiği gerektiği gibi yeniden çalıştırarak aynı ortamları yeniden oluşturabilir veya test için özel bir ortam oluşturmak üzere betiği web uygulamanızın kendi derlemesiyle çalıştırabilirsiniz.

Önkoşullar

Ek araçlar

Azure geliştirme için Visual Studio'da PowerShell ile çalışmaya yönelik ek araçlar ve kaynaklar sağlanır. Bkz. Visual Studio için PowerShell Araçları.

Yayımlama betiklerini oluşturma

Bu yönergeleri izleyerek yeni bir proje oluşturduğunuzda web sitenizi barındıran bir sanal makine için yayımlama betikleri oluşturabilirsiniz. Azure Uygulaması Hizmeti'nde web uygulamaları için yayımlama betikleri de oluşturabilirsiniz.

Visual Studio'da oluşturulan betikler

Visual Studio, iki Windows PowerShell dosyası, sanal makineniz veya web siteniz için bir yayımlama betiği ve betiklerde kullanabileceğiniz işlevleri içeren bir modül içeren PublishScripts adlı bir çözüm düzeyinde klasör oluşturur. Visual Studio ayrıca, dağıttığınız projenin ayrıntılarını belirten JSON biçiminde bir dosya oluşturur.

Windows PowerShell yayımlama betiği

Yayımlama betiği, bir web sitesine veya sanal makineye dağıtmaya yönelik belirli yayımlama adımlarını içerir. Visual Studio, Windows PowerShell geliştirmesi için söz dizimi renklendirmesi sağlar. İşlevler için yardım sağlanır ve betikteki işlevleri değişen gereksinimlerinize uyacak şekilde serbestçe düzenleyebilirsiniz.

Windows PowerShell modülü

Visual Studio'da oluşturulan Windows PowerShell modülü, yayımlama betiğinin kullandığı işlevleri içerir. Bu Azure PowerShell işlevlerinin değiştirilmesi amaçlanmamıştır. Bkz. Azure PowerShell'i yükleme ve yapılandırma.

JSON yapılandırma dosyası

JSON dosyası Configurations klasöründe oluşturulur ve Tam olarak Azure'a dağıtılacak kaynakları belirten yapılandırma verilerini içerir. Visual Studio'nun oluşturduğu dosyanın adı, web sitesi oluşturduysanız project-name-WAWS-dev.json veya sanal makine oluşturduysanız proje name-VM-dev.json. Aşağıda, bir web sitesi oluşturduğunuzda oluşturulan bir JSON yapılandırma dosyası örneği verilmiştır. Değerlerin çoğu açıklayıcıdır. Web sitesi adı Azure tarafından oluşturulduğundan projenizin adıyla eşleşmeyebilir.

{
    "environmentSettings": {
        "webSite": {
            "name": "WebApplication26632",
            "location": "West US"
        },
        "databases": [{
            "connectionStringName": "DefaultConnection",
            "databaseName": "WebApplication26632_db",
            "serverName": "YourDatabaseServerName",
            "user": "sqluser2",
            "password": "",
            "edition": "",
            "size": "",
            "collation": "",
            "location": "West US"
        }]
    }
}

Bir sanal makine oluşturduğunuzda, JSON yapılandırma dosyası aşağıdakine benzer görünür. Sanal makine için kapsayıcı olarak bir bulut hizmeti oluşturulur. Sanal makine, HTTP ve HTTPS aracılığıyla web erişimi için normal uç noktaların yanı sıra yerel makinenizden, Uzak Masaüstü'nden ve Windows PowerShell'den web sitesine yayımlamanıza olanak tanıyan Web Dağıtımı uç noktalarını içerir.

{
    "environmentSettings": {
        "cloudService": {
            "name": "myusernamevm1",
            "affinityGroup": "",
            "location": "West US",
            "virtualNetwork": "",
            "subnet": "",
            "availabilitySet": "",
            "virtualMachine": {
                "name": "myusernamevm1",
                "vhdImage": "a699494373c04fc0bc8f2bb1389d6106__Win2K8R2SP1-Datacenter-201403.01-en.us-127GB.vhd",
                "size": "Small",
                "user": "vmuser1",
                "password": "",
                "enableWebDeployExtension": true,
                "endpoints": [{
                        "name": "Http",
                        "protocol": "TCP",
                        "publicPort": "80",
                        "privatePort": "80"
                    },
                    {
                        "name": "Https",
                        "protocol": "TCP",
                        "publicPort": "443",
                        "privatePort": "443"
                    },
                    {
                        "name": "WebDeploy",
                        "protocol": "TCP",
                        "publicPort": "8172",
                        "privatePort": "8172"
                    },
                    {
                        "name": "Remote Desktop",
                        "protocol": "TCP",
                        "publicPort": "3389",
                        "privatePort": "3389"
                    },
                    {
                        "name": "Powershell",
                        "protocol": "TCP",
                        "publicPort": "5986",
                        "privatePort": "5986"
                    }
                ]
            }
        },
        "databases": [{
            "connectionStringName": "",
            "databaseName": "",
            "serverName": "",
            "user": "",
            "password": ""
        }],
        "webDeployParameters": {
            "iisWebApplicationName": "Default Web Site"
        }
    }
}

Yayımlama betiklerini çalıştırdığınızda ne olacağını değiştirmek için JSON yapılandırmasını düzenleyebilirsiniz. cloudService ve virtualMachine bölümleri gereklidir, ancak ihtiyacınız yoksa bölümü silebilirsinizdatabases. Visual Studio'nın oluşturduğu varsayılan yapılandırma dosyasında boş olan özellikler isteğe bağlıdır; varsayılan yapılandırma dosyasında değerleri olan özellikler gereklidir.

Azure'da tek bir üretim sitesi yerine birden çok dağıtım ortamına (yuva olarak bilinir) sahip bir web siteniz varsa, JSON yapılandırma dosyasına web sitesinin adına yuva adını ekleyebilirsiniz. Örneğin, sitem adlı bir web siteniz ve test adlı bir yuvanız varsa, URI 'dirmysite-test.cloudapp.net, ancak yapılandırma dosyasında kullanılacak doğru ad sitem(test) olur. Bunu yalnızca web sitesi ve yuvalar aboneliğinizde zaten varsa yapabilirsiniz. Bunlar yoksa, yuvayı belirtmeden betiği çalıştırarak web sitesini oluşturun, ardından yuvayı Azure portalında oluşturun ve ardından değiştirilen web sitesi adıyla betiği çalıştırın. Web uygulamalarının dağıtım yuvaları hakkında daha fazla bilgi için bkz. Azure Uygulaması Service'te web uygulamaları için hazırlama ortamlarını ayarlama.

Yayımlama betiklerini çalıştırma

Daha önce hiç Windows PowerShell betiği çalıştırmadıysanız, önce betiklerin çalıştırılmasını etkinleştirmek için yürütme ilkesini ayarlamanız gerekir. İlke, kullanıcıların kötü amaçlı yazılımlara veya betikleri yürütmeyi içeren virüslere karşı savunmasız olmaları durumunda Windows PowerShell betiklerini çalıştırmalarını önlemeye yönelik bir güvenlik özelliğidir.

Betiği çalıştırın

  1. Projeniz için Web Dağıtımı paketini oluşturun. Web Dağıtımı paketi, web sitenize veya sanal makinenize kopyalamak istediğiniz dosyaları içeren sıkıştırılmış bir arşivdir (.zip dosya). Herhangi bir web uygulaması için Visual Studio'da Web Dağıtımı paketleri oluşturabilirsiniz.

    Web Dağıtım Paketi Oluşturma

    Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Web Dağıtım Paketi Oluşturma. Yayımlama betiklerini özelleştirme ve genişletme başlığı altında açıklandığı gibi Web Dağıtımı paketinizin oluşturulmasını otomatikleştirebilirsiniz.

  2. Çözüm Gezgini betiğin bağlam menüsünü açın ve ardından PowerShell ISE ile Aç'ı seçin.

  3. Bu bilgisayarda Windows PowerShell betiklerini ilk kez çalıştırıyorsanız, Yönetici istrator ayrıcalıklarına sahip bir komut istemi penceresi açın ve aşağıdaki komutu yazın:

    Set-ExecutionPolicy RemoteSigned
    
  4. Aşağıdaki komutu kullanarak Azure'da oturum açın.

    Add-AzureAccount
    

    İstendiğinde kullanıcı adınızı ve parolanızı girin.

    Betiği otomatikleştirdiğinizde bu Azure kimlik bilgilerini sağlama yönteminin çalışmadığını unutmayın. Bunun yerine, kimlik bilgilerini sağlamak için dosyasını kullanmanız .publishsettings gerekir. Yalnızca bir kez Get-AzurePublish Ayarlar File komutunu kullanarak dosyayı Azure'dan indirirsiniz ve ardından import-AzurePublish Ayarlar File komutunu kullanarak dosyayı içeri aktarırsınız. Ayrıntılı yönergeler için bkz. Azure PowerShell'i yükleme ve yapılandırma.

  5. (İsteğe bağlı) Web uygulamanızı yayımlamadan sanal makine, veritabanı ve web sitesi gibi Azure kaynakları oluşturmak istiyorsanız, -Configuration bağımsız değişkeni JSON yapılandırma dosyasına ayarlanmış şekilde Publish-WebApplication.ps1 komutunu kullanın. Bu komut satırı, oluşturulacak kaynakları belirlemek için JSON yapılandırma dosyasını kullanır. Diğer komut satırı bağımsız değişkenleri için varsayılan ayarları kullandığından, kaynakları oluşturur ancak web uygulamanızı yayımlamaz. –Ayrıntılı seçeneği, neler olduğu hakkında daha fazla bilgi sağlar.

    Publish-WebApplication.ps1 -Verbose –Configuration C:\Path\WebProject-WAWS-dev.json
    
  6. Betiği çağırmak ve web uygulamanızı yayımlamak için aşağıdaki örneklerden birinde gösterildiği gibi Publish-WebApplication.ps1 komutunu kullanın. Abonelik adı, paket adı yayımlama, sanal makine kimlik bilgileri veya veritabanı sunucusu kimlik bilgileri gibi diğer bağımsız değişkenlerden herhangi birinin varsayılan ayarlarını geçersiz kılmanız gerekiyorsa, bu parametreleri belirtebilirsiniz. Yayımlama işleminin ilerleme durumu hakkında daha fazla bilgi görmek için –Verbose seçeneğini kullanın.

    Publish-WebApplication.ps1 –Configuration C:\Path\WebProject-WAWS-dev-json `
    –SubscriptionName Contoso `
    -WebDeployPackage C:\Documents\Azure\ADWebApp.zip `
    -DatabaseServerPassword @{Name="dbServerName";Password="adminPassword"} `
    -Verbose
    

    Sanal makine oluşturuyorsanız komut aşağıdaki gibi görünür. Bu örnek, birden çok veritabanı için kimlik bilgilerinin nasıl belirtileceğini de gösterir. Bu betiklerin oluşturduğu sanal makineler için SSL sertifikası güvenilir bir kök yetkiliden değildir. Bu nedenle, –AllowUntrusted seçeneğini kullanmanız gerekir.

    Publish-WebApplication.ps1 `
    -Configuration C:\Path\ADVM-VM-test.json `
    -SubscriptionName Contoso `
    -WebDeployPackage C:\Path\ADVM.zip `
    -AllowUntrusted `
    -VMPassword @{name = "vmUserName"; password = "YourPasswordHere"} `
    -DatabaseServerPassword @{Name="server1";Password="adminPassword1"}, @{Name="server2";Password="adminPassword2"} `
    -Verbose
    

    Betik veritabanları oluşturabilir, ancak veritabanı sunucuları oluşturmaz. Veritabanı sunucusu oluşturmak istiyorsanız, Azure modülünde New-AzureSqlDatabaseServer işlevini kullanabilirsiniz.

Yayımlama betiklerini özelleştirme ve genişletme

Yayımlama betiğini ve JSON yapılandırma dosyasını özelleştirebilirsiniz. AzureWebAppPublishModule.psm1 Windows PowerShell modülündeki işlevlerin değiştirilmesi amaçlanmamıştır. Yalnızca farklı bir veritabanı belirtmek veya sanal makinenin bazı özelliklerini değiştirmek istiyorsanız JSON yapılandırma dosyasını düzenleyin. Projenizi derlemeyi ve test etme işlemini otomatikleştirmek için betiğin işlevselliğini genişletmek istiyorsanız, Publish-WebApplication.ps1 dosyasında işlev saptamaları uygulayabilirsiniz.

Projenizi derlemeyi otomatikleştirmek için, bu kod örneğinde gösterildiği gibi MSBuild'i New-WebDeployPackage çağıran kod ekleyin. MSBuild komutunun yolu, yüklediğiniz Visual Studio sürümüne bağlı olarak farklıdır. Doğru yolu almak için, bu örnekte gösterildiği gibi Get-MSBuildCmd işlevini kullanabilirsiniz.

Projenizi derlemeyi otomatikleştirmek için

  1. parametresini $ProjectFile genel param bölümüne ekleyin.

    [Parameter(Mandatory = $false)]
    [ValidateScript({Test-Path $_ -PathType Leaf})]
    [String]
    $ProjectFile,
    
  2. İşlevi Get-MSBuildCmd betik dosyanıza kopyalayın.

    function Get-MSBuildCmd
    {
       process
       {
        $StartInfo  = New-Object System.Diagnostics.ProcessStartInfo;
        $StartInfo.Filename = ${Env:ProgramFiles(x86)} + "\\Microsoft Visual Studio\\Installer\\vswhere.exe"
        $StartInfo.Arguments = " -latest -requires Microsoft.Component.MSBuild -find MSBuild\\**\\Bin\\MSBuild.exe"
        $StartInfo.RedirectStandardOutput = $True
        $StartInfo.UseShellExecute = $False
        [System.Diagnostics.Process] $VSWhere = [Diagnostics.Process]::Start($StartInfo)
        $VSWhere.WaitForExit()
        return $VSWhere.StandardOutput.ReadToEnd();
        }
    }
    
  3. değerini aşağıdaki kodla değiştirin New-WebDeployPackage ve satır oluşturmadaki $msbuildCmdyer tutucuları değiştirin.

    function New-WebDeployPackage
    {
        #Write a function to build and package your web application
    

    Web uygulamanızı oluşturmak için MSBuild.exe kullanın. Yardım için bkz. MSBuild Komut Satırı Başvurusu

    Write-VerboseWithTime 'Build-WebDeployPackage: Start'
    
    $msbuildCmd = '"{0}" "{1}" /T:Rebuild;Package /p:OutputPath="{2}\MSBuildOutputPath" /flp:logfile=msbuild.log,v=d' -f (Get-MSBuildCmd), $ProjectFile, $scriptDirectory
    
    Write-VerboseWithTime ('Build-WebDeployPackage: ' + $msbuildCmd)
    

Derleme komutunu yürütmeyi başlatma

$job = Start-Process cmd.exe -ArgumentList('/C "' + $msbuildCmd + '"') -WindowStyle Normal -Wait -PassThru

if ($job.ExitCode -ne 0) {
    throw('MSBuild exited with an error. ExitCode:' + $job.ExitCode)
}

#Obtain the project name
$projectName = (Get-Item $ProjectFile).BaseName

#Construct the path to web deploy zip package
$DeployPackageDir =  '.\MSBuildOutputPath\_PublishedWebsites\{0}_Package\{0}.zip' -f $projectName

#Get the full path for the web deploy zip package. This is required for MSDeploy to work
$WebDeployPackage = Resolve-Path –LiteralPath $DeployPackageDir

Write-VerboseWithTime 'Build-WebDeployPackage: End'

return $WebDeployPackage
}
  1. İşlevi şu satırdan önce çağırın New-WebDeployPackage : $Config = Read-ConfigFile $Configuration web uygulamaları veya $Config = Read-ConfigFile $Configuration -HasWebDeployPackage:([Bool]$WebDeployPackage) sanal makineler için.

    if($ProjectFile)
    {
    $WebDeployPackage = New-WebDeployPackage
    }
    
  2. Aşağıdaki örnekte olduğu gibi bağımsız değişkeni geçirerek komut satırından $Project özelleştirilmiş betiği çağırın:

    .\Publish-WebApplicationVM.ps1 -Configuration .\Configurations\WebApplication5-VM-dev.json `
    -ProjectFile ..\WebApplication5\WebApplication5.csproj `
    -VMPassword @{Name="VMUser";Password="Test.123"} `
    -AllowUntrusted `
    -Verbose
    

    Uygulamanızın testini otomatikleştirmek için öğesine Test-WebApplicationkod ekleyin. Publish-WebApplication.ps1 dosyasında bu işlevlerin çağrıldığı satırların açıklamasını kaldırdığınızdan emin olun. Uygulama sağlamazsanız Visual Studio ile projenizi el ile derleyebilir ve ardından Azure'da yayımlamak için yayımlama betiğini çalıştırabilirsiniz.

Yayımlama işlevi özeti

Windows PowerShell komut isteminde kullanabileceğiniz işlevlerle ilgili yardım almak için komutunu Get-Help function-namekullanın. Yardım, parametre yardımını ve örneklerini içerir. Aynı yardım metni, AzureWebAppPublishModule.psm1 ve Publish-WebApplication.ps1 betik kaynak dosyalarında da bulunur. Betik ve yardım, Visual Studio dilinizde yerelleştirilir.

AzureWebAppPublishModule

İşlev adı Açıklama
Add-AzureSQLDatabase Yeni bir Azure SQL veritabanı oluşturur.
Add-AzureSQLDatabases Visual Studio tarafından oluşturulan JSON yapılandırma dosyasındaki değerlerden Azure SQL veritabanları oluşturur.
Add-AzureVM Bir Azure sanal makinesi oluşturur ve dağıtılan VM'nin URL'sini döndürür. İşlev önkoşulları ayarlar ve yeni bir sanal makine oluşturmak için New-AzureVM işlevini (Azure modülü) çağırır.
Add-AzureVMEndpoints Sanal makineye yeni giriş uç noktaları ekler ve yeni uç nokta ile sanal makineyi döndürür.
Add-AzureVM Depolama Geçerli abonelikte yeni bir Azure Depolama hesabı oluşturur. Hesabın adı "geliştirme/test" ile başlar ve ardından benzersiz bir alfasayısal dize gelir. İşlev, yeni depolama hesabının adını döndürür. Yeni depolama hesabı için bir konum veya benşim grubu belirtin.
Add-AzureWebsite Belirtilen ad ve konuma sahip bir web sitesi oluşturur. Bu işlev, Azure modülündeki New-AzureWebsite işlevini çağırır. Abonelikte belirtilen ada sahip bir web sitesi yoksa, bu işlev web sitesini oluşturur ve bir web sitesi nesnesi döndürür. Aksi takdirde döndürür $null.
Yedekleme-Abonelik Geçerli Azure aboneliğini betik kapsamındaki değişkene $Script:originalSubscription kaydeder. Bu işlev, geçerli Azure aboneliğini (tarafından Get-AzureSubscription -Currentelde edilen) ve depolama hesabını ve bu betik tarafından değiştirilen aboneliği (değişkende $UserSpecifiedSubscriptiondepolanır) ve depolama hesabını betik kapsamına kaydeder. Değerleri kaydederek, geçerli durum değiştiyse özgün geçerli aboneliği ve depolama hesabını geçerli duruma geri yüklemek için gibi Restore-Subscriptionbir işlev kullanabilirsiniz.
Bul-AzureVM Belirtilen Azure sanal makinesini alır.
Format-DevTestMessageWithTime Tarih ve saati iletiye ekler. Bu işlev, Error ve Verbose akışlarına yazılan iletiler için tasarlanmıştır.
Get-AzureSQLDatabase Bağlan ionString Azure SQL veritabanına bağlanmak için bir bağlantı dizesi derler.
Get-AzureVM Depolama Belirtilen konum veya benzenşim grubundaki "geliştirme/test*" (büyük/küçük harf duyarsız) ad deseniyle ilk depolama hesabının adını döndürür. "geliştirme/test*" depolama hesabı konum veya benşim grubuyla eşleşmiyorsa işlev bunu yoksayar. Bir konum veya benzite grubu belirtin.
Get-MSDeployCmd MsDeploy.exe aracını çalıştırmak için bir komut döndürür.
New-AzureVMEnvironment Abonelikte JSON yapılandırma dosyasındaki değerlerle eşleşen bir sanal makine bulur veya oluşturur.
Publish-WebPackage MsDeploy.exe ve bir web yayımlama paketi kullanır. Kaynakları bir web sitesine dağıtmak için zip dosyası. Bu işlev herhangi bir çıkış oluşturmaz. MSDeploy.exe çağrısı başarısız olursa işlev bir özel durum oluşturur. Daha ayrıntılı çıktı almak için -Verbose seçeneğini kullanın.
Publish-WebPackageToVM Parametre değerlerini doğrular ve ardından Publish-WebPackage işlevini çağırır.
Read-ConfigFile JSON yapılandırma dosyasını doğrular ve seçili değerlerin karma tablosunu döndürür.
Aboneliği Geri Yükle Geçerli aboneliği özgün aboneliğe sıfırlar.
Test-AzureModule Yüklü Azure modülü sürümü 0.7.4 veya üzeriyse döndürür $true . Modül yüklü değilse veya önceki bir sürümse döndürür $false . Bu işlevin parametresi yok.
Test-AzureModuleVersion Azure modülünün sürümü 0.7.4 veya üzeriyse döndürür $true . Modül yüklü değilse veya önceki bir sürümse döndürür $false . Bu işlevin parametresi yok.
Test-HttpsUrl Giriş URL'sini bir System.Uri nesneye dönüştürür. URL mutlaksa ve şeması HTTPS ise döndürür $True . URL göreliyse, şeması HTTPS değilse veya giriş dizesi URL'ye dönüştürülemiyorsa döndürür $false .
Test Üyesi Bir özellik veya yöntem nesnenin üyesiyse döndürür $true . Aksi takdirde döndürür $false.
Write-ErrorWithTime Geçerli saatle ön ekli bir hata iletisi yazar. Bu işlev, iletiyi Hata akışına yazmadan önceki süreyi eklemek için Format-DevTestMessageWithTime işlevini çağırır.
Write-HostWithTime Konak programına (Write-Host) geçerli saatle ön ekli bir ileti yazar. Ana bilgisayar programına yazmanın etkisi değişir. Windows PowerShell'i barındıran programların çoğu bu iletileri standart çıkışa yazar.
Write-VerboseWithTime Geçerli saatle ön ekli ayrıntılı bir ileti yazar. Write-Verbose çağrısı yapıldığından, ileti yalnızca betik Ayrıntılı parametresiyle çalıştırıldığında veya VerbosePreference tercihi Devam olarak ayarlandığında görüntülenir.

Publish-WebApplication

İşlev adı Açıklama
New-AzureWebApplicationEnvironment Web sitesi veya sanal makine gibi Azure kaynakları oluşturur.
New-WebDeployPackage Bu işlev uygulanmaz. Projenizi oluşturmak için bu işleve komutlar ekleyebilirsiniz.
Publish-AzureWebApplication Azure'da bir web uygulaması yayımlar.
Publish-WebApplication Visual Studio web projesi için Web Apps, sanal makineler, SQL veritabanları ve depolama hesapları oluşturur ve dağıtır.
Test-WebApplication Bu işlev uygulanmaz. Uygulamanızı test etmek için bu işleve komut ekleyebilirsiniz.

Windows PowerShell ile Betik Oluşturma'yı okuyarak PowerShell betiği oluşturma hakkında daha fazla bilgi edinin ve Betik Merkezi'nde diğer Azure PowerShell betiklerini görün.