Azure Otomasyonu’nda modülleri yönetme

Azure Otomasyonu, runbook'larda cmdlet'leri ve DSC yapılandırmalarındaki DSC kaynaklarını etkinleştirmek için bir dizi PowerShell modülü kullanır. Desteklenen modüller şunlardır:

Otomasyon hesabı oluşturduğunuzda Azure Otomasyonu bazı modülleri varsayılan olarak içeri aktarır. Bkz. Varsayılan modüller.

Korumalı Alanlar

Otomasyon runbook ve DSC derleme işlerini yürüttüğünde, modülleri runbook'ların çalıştırıldığı ve DSC yapılandırmalarının derlendiği korumalı alanlara yükler. Otomasyon ayrıca tüm DSC kaynaklarını otomatik olarak DSC çekme sunucusundaki modüllere yerleştirir. Makineler DSC yapılandırmalarını uyguladığında kaynakları çekebilir.

Bulut korumalı alanı en fazla 48 sistem çağrısını destekler ve güvenlik nedeniyle diğer tüm çağrıları kısıtlar. Kimlik bilgileri yönetimi ve bazı ağ gibi diğer işlevler bulut korumalı alanında desteklenmez.

Dahil edilen modül ve cmdlet sayısı nedeniyle, hangi cmdlet'lerin desteklenmeyen çağrılar yapacağı önceden bilinmesi zordur. Genel olarak, yükseltilmiş erişim gerektiren, parametre olarak kimlik bilgisi gerektiren cmdlet'lerle veya ağ ile ilgili cmdlet'lerle ilgili sorunlar gördük. Tam yığın ağ işlemleri gerçekleştiren cmdlet'ler, AIPService PowerShell modülünden Bağlan-AipService ve DNSClient modülünden Resolve-DnsName dahil olmak üzere korumalı alanda desteklenmez.

Bunlar korumalı alanla ilgili bilinen sınırlamalardır. Önerilen geçici çözüm, Karma Runbook Çalışanı dağıtmak veya Azure İşlevleri kullanmaktır.

Önemli

Az modülüyle yürütülmek üzere tasarlanmış betiklere "AzureRm" anahtar sözcüğünü eklemeyin. Anahtar sözcüğün bir açıklamaya dahil edilmesi, AzureRm'nin yüklenmesine ve ardından Az modülüyle çakışmasına neden olabilir.

Varsayılan modüller

Tüm yeni Otomasyon hesapları, varsayılan olarak içeri aktarılan PowerShell Az modülünün en son sürümüne sahiptir. Az modülü AzureRM'nin yerini alır ve Azure ile kullanılması önerilen modüldür. Yeni Otomasyon hesabındaki varsayılan modüller mevcut 24 AzureRM modülünü ve 60+ Az modülünü içerir.

Otomasyon hesapları için kullanıcı tarafından modülleri en son Az modülüne güncelleştirmeye yönelik yerel bir seçenek vardır. İşlem, arka uçta tüm modül bağımlılıklarını ele alır ve bu sayede modülleri el ile güncelleştirme veya Azure modüllerini güncelleştirmek için runbook'u yürütme zahmetlerini ortadan kaldırır.

Mevcut Otomasyon hesabında yalnızca AzureRM modülleri varsa Az modüllerini güncelleştir seçeneği Otomasyon hesabını az modülünün kullanıcı tarafından seçilen sürümüyle güncelleştirir.

Mevcut Otomasyon hesabında AzureRM ve bazı Az modülleri varsa, seçeneği kalan Az modüllerini Otomasyon hesabına aktarır. Mevcut Az modülleri tercih edilecek ve güncelleştirme işlemi bu modülleri güncelleştirmeyecektir. Bu, bir runbook tarafından kullanılan modülü yanlışlıkla güncelleştirerek güncelleştirme modülü işleminin herhangi bir runbook yürütme hatasına yol açmamasını sağlamaktır. Bu senaryo için önerilen yol, önce mevcut Az modüllerini silmek ve ardından Otomasyon hesabına içeri aktarılan en son Az modülünü almak için güncelleştirme işlemlerini gerçekleştirmektir. Varsayılan olarak içeri aktarılmayan bu tür modül türleri Özel olarak adlandırılır. Özel modüller her zaman varsayılan modüller yerine tercihi alır.

Örneğin: Modülü az module 6.3.0 tarafından sağlanan sürüm 2.3.0 ile zaten Az.Aks içeri aktardıysanız ve Az modülünü en son 6.4.0 sürümüne güncelleştirmeye çalışırsınız. Güncelleştirme işlemi, dışında Az.Aks6.4.0 paketindeki tüm Az modüllerini içeri aktarır. uygulamasının en son sürümüne Az.Akssahip olmak için önce mevcut modülü silin ve ardından güncelleştirme işlemini gerçekleştirin ya da az modüllerini içeri aktarma bölümünde açıklandığı gibi bu modülü ayrı olarak güncelleştirerek belirli bir modülün farklı bir sürümünü içeri aktarabilirsiniz.

Aşağıdaki tabloda, Otomasyon hesabınızı oluştururken varsayılan olarak içeri Azure Otomasyonu modülleri listelemektedir. Otomasyon, bu modüllerin daha yeni sürümlerini içeri aktarabilir. Ancak, daha yeni bir sürümü silseniz bile Özgün sürümü Otomasyon hesabınızdan kaldıramazsınız.

Varsayılan modüller genel modüller olarak da bilinir. Azure portalında, hesap oluşturulduğunda içeri aktarılan bir modülü görüntülerken Genel modül özelliği doğru olacaktır.

Screenshot of global module property in Azure Portal

Dekont

Vm'leri çalışma saatleri dışında başlatma/durdurma özelliğinin dağıtımı için kullanılan Otomasyon hesaplarında modüllerin ve runbook'ların değiştirilmesini önermiyoruz.

Modül adı Sürüm
Az.* PowerShell Galerisi'da Paket Ayrıntıları altında tam listeye bakın
AuditPolicyDsc 1.1.0.0
Azure 1.0.3
Azure Depolama 1.0.3
AzureRM.Automation 1.0.3
AzureRM.Compute 1.2.1
AzureRM.Profile 1.0.3
AzureRM.Resources 1.0.3
AzureRM.Sql 1.0.3
AzureRM.Storage 1.0.3
ComputerManagementDsc 5.0.0.0
GPRegistryPolicyParser 0,2
Microsoft.PowerShell.Core 0
Microsoft.PowerShell.Diagnostics
Microsoft.PowerShell.Management
Microsoft.PowerShell.Security
Microsoft.PowerShell.Utility
Microsoft.WSMan.Management
Orchestrator.AssetManagement.Cmdlets Kategori 1
PSDscResources 2.9.0.0
SecurityPolicyDsc 2.1.0.0
StateConfigCompositeResources Kategori 1
xDSCDomainjoin 1.1
xPowerShellExecutionPolicy 1.1.0.0
xRemoteDesktop Yönetici 1.1.0.0

İç cmdlet'ler

Azure Otomasyonu, yalnızca Runbook'ları Azure korumalı alan ortamında veya Windows Karma Runbook Çalışanı'nda yürütürken kullanılabilen iç cmdlet'leri destekler. İç modül Orchestrator.AssetManagement.Cmdlets , Otomasyon hesabınızda ve makinede Windows Karma Runbook Çalışanı rolü yüklü olduğunda varsayılan olarak yüklenir.

Aşağıdaki tabloda iç cmdlet'ler tanımlanmıştır. Bu cmdlet'ler, Otomasyon hesabı kaynaklarınızla etkileşim kurmak için Azure PowerShell cmdlet'ler yerine kullanılacak şekilde tasarlanmıştır. Şifrelenmiş değişkenlerden, kimlik bilgilerinden ve şifrelenmiş bağlantılardan gizli dizileri alabilirler.

Ad Tanım
Get-AutomationCertificate Get-AutomationCertificate [-Name] <string> [<CommonParameters>]
Get-AutomationConnection Get-AutomationConnection [-Name] <string> [-DoNotDecrypt] [<CommonParameters>]
Get-AutomationPSCredential Get-AutomationPSCredential [-Name] <string> [<CommonParameters>]
Get-AutomationVariable Get-AutomationVariable [-Name] <string> [-DoNotDecrypt] [<CommonParameters>]
Set-AutomationVariable Set-AutomationVariable [-Name] <string> -Value <Object> [<CommonParameters>]
Start-AutomationRunbook Start-AutomationRunbook [-Name] <string> [-Parameters <IDictionary>] [-RunOn <string>] [-JobId <guid>] [<CommonParameters>]
Wait-Automationjob Wait-AutomationJob -Id <guid[]> [-TimeoutInMinutes <int>] [-DelayInSeconds <int>] [-OutputJobsTransitionedToRunning] [<CommonParameters>]

İç cmdlet'lerin Az ve AzureRM cmdlet'lerinden farklı olduğunu unutmayın. İç cmdlet adları, adın içinde veya Az gibi Azure sözcükler içermez, ancak sözcüğünü Automationkullanın. Azure korumalı alanında veya Windows Karma Runbook Çalışanı'nda runbook yürütme sırasında Az veya AzureRM cmdlet'lerinin kullanılması önerilir çünkü bunlar daha az parametreye ihtiyaç duyar ve yürütme sırasında işiniz bağlamında çalışır.

Otomasyon kaynaklarını runbook bağlamı dışında işlemek için Az veya AzureRM cmdlet'lerini kullanın.

Python modülleri

Azure Otomasyonu'de Python 2 runbook'ları oluşturabilirsiniz. Python modülü bilgileri için bkz. Azure Otomasyonu'de Python 2 paketlerini yönetme.

Özel modüller

Azure Otomasyonu, runbook'larınız ve DSC yapılandırmalarınızla kullanmak için oluşturduğunuz özel PowerShell modüllerini destekler. Özel modül türlerinden biri, isteğe bağlı olarak modül cmdlet'leri için özel işlevselliği tanımlamak üzere bir meta veri dosyası içeren bir tümleştirme modülüdür. Bağlantı türü ekleme bölümünde tümleştirme modülünün kullanımına bir örnek verilmiştir.

Azure Otomasyonu, cmdlet'lerini kullanılabilir hale getirmek için özel bir modülü içeri aktarabilir. Arka planda modülü depolar ve diğer modüllerde olduğu gibi Azure korumalı alanlarında kullanır.

Az modüllerine geçiş

Bu bölümde Otomasyon'da Az modüllerine nasıl geçiş yapılacağını anlatabilirsiniz. Daha fazla bilgi için bkz . Azure PowerShell'i AzureRM'den Az'ye geçirme.

AzureRM modüllerini ve Az modüllerini aynı Otomasyon hesabında çalıştırmanızı önermiyoruz. AzureRM'den Az'ye geçiş yapmak istediğinizden eminseniz, tam geçişe tam olarak bağlanmak en iyisidir. Otomasyon genellikle başlangıç zamanlarından tasarruf etmek için Otomasyon hesabındaki korumalı alanları yeniden kullanır. Tam modül geçişi yapmazsanız, yalnızca AzureRM modüllerini kullanan bir iş başlatabilir ve ardından yalnızca Az modüllerini kullanan başka bir iş başlatabilirsiniz. Korumalı alan kısa süre içinde kilitlenir ve modüllerin uyumlu olmadığını belirten bir hata alırsınız. Bu durum, belirli bir runbook veya yapılandırma için rastgele kilitlenmelere neden olur.

Dekont

Yeni bir Otomasyon hesabı oluşturduğunuzda, Az modüllerine geçiş yaptıktan sonra bile Otomasyon varsayılan olarak AzureRM modüllerini yüklemeye devam eder.

Modül geçişi öncesinde runbook'larınızı ve DSC yapılandırmalarınızı test etme

Az modüllerine geçmeden önce tüm runbook'ları ve DSC yapılandırmalarını ayrı bir Otomasyon hesabında dikkatle test etmeye dikkat edin.

AzureRM modüllerini kullanan tüm runbook'ları durdurma ve zamanlamasını kaldırma

AzureRM modüllerini kullanan mevcut runbook'ları veya DSC yapılandırmalarını çalıştırmadığınızdan emin olmak için etkilenen tüm runbook'ları ve yapılandırmaları durdurmanız ve zamanlamasını kaldırmanız gerekir. İlk olarak, gerekirse öğeyi gelecekte yeniden zamanlayabilmeniz için her runbook veya DSC yapılandırmasını ve zamanlamalarını ayrı ayrı gözden geçirin.

Zamanlamalarınızı kaldırmaya hazır olduğunuzda Azure portalını veya Remove-AzureRmAutomationSchedule cmdlet'ini kullanabilirsiniz. Bkz. Zamanlama kaldırma.

AzureRM modüllerini kaldırma

Az modüllerini içeri aktarmadan önce AzureRM modüllerini kaldırabilirsiniz. Ancak, bunu yaparsanız kaynak denetimi eşitlemesini kesintiye uğratabilir ve hala zamanlanmış betiklerin başarısız olmasına neden olabilirsiniz. Modülleri kaldırmaya karar verirseniz bkz . AzureRM'yi kaldırma.

Az modüllerini içeri aktar

Az modülünü Otomasyon hesabınıza aktarmak, modülü runbook'ların kullandığı PowerShell oturumuna otomatik olarak aktarmaz. Modüller aşağıdaki durumlarda PowerShell oturumuna aktarılır:

  • Runbook bir modülden bir cmdlet çağırdığında.
  • Bir runbook modülü Import-Module cmdlet'iyle açıkça içeri aktardığında.
  • Bir runbook, using module deyimiyle modülü açıkça içeri aktardığında. using deyimi, Windows PowerShell 5.0’dan itibaren desteklenir ve sınıfları ve enum türü içeri aktarmayı destekler.
  • Runbook başka bir bağımlı modülü içeri aktardığında.

Az modüllerini Azure portaldan Otomasyon hesabına aktarabilirsiniz. Az.Accounts diğer Az modülleri için bir bağımlılık olduğundan, bu modülü diğerlerinden önce içeri aktardığından emin olun.

Dekont

PowerShell 7.1 (önizleme) desteğinin kullanıma sunulmasıyla birlikte Galeriye gözat seçeneği aşağıdaki değişikliklerle güncelleştirildi:

  • Göz atma galerisi İşlem Otomasyonu>Modülleri dikey penceresinde kullanılabilir.
  • Modüller sayfasında iki yeni sütun görüntülenir: Modül sürümü ve Çalışma Zamanı sürümü
  1. Azure Portal oturum açın.

  2. Otomasyon Hesapları'nı arayın ve seçin.

  3. Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.

  4. Otomasyon hesabınızdaki Paylaşılan Kaynaklar'ın altında Modüller'i seçin.

  5. Modül ekleyin’i seçin. Modül ekle sayfasında aşağıdaki seçeneklerden birini belirleyebilirsiniz:

    1. Dosyaya gözat - yerel makinenizden bir dosya seçer.
    2. Galeri'den göz atın: Galeriden var olan bir modüle göz atabilir ve bunu seçebilirsiniz.
  6. Bir modül seçmek için Seç'e tıklayın.

  7. Çalışma zamanı sürümü'ne tıklayın ve İçeri Aktar'a tıklayın.

    Screenshot of importing modules into your Automation account.

  8. Modüller sayfasında, otomasyon hesabı altında içeri aktarılan modülü görüntüleyebilirsiniz.

Bu içeri aktarma işlemini, içeri aktaracak modülü arayarak PowerShell Galerisi da yapabilirsiniz. Modülü bulduğunuzda seçin ve Azure Otomasyonu sekmesini seçin. Azure Otomasyonu dağıt'ı seçin.

Screenshot of importing modules directly from PowerShell Gallery.

Runbook'larınızı test edin

Az modüllerini Otomasyon hesabına aktardıktan sonra, yeni modülleri kullanmak için runbook'larınızı ve DSC yapılandırmalarınızı düzenlemeye başlayabilirsiniz. Runbook'un yeni cmdlet'leri kullanacak şekilde değiştirilmesini test etmenin bir yolu, runbook'un başındaki komutu kullanmaktır Enable-AzureRmAlias -Scope Process . Bu komutu runbook'unuza ekleyerek betik değişiklik yapmadan çalıştırılabilir.

Modül yazma

Azure Otomasyonu'de kullanmak üzere özel bir PowerShell modülü yazarken bu bölümdeki önemli noktaları izlemenizi öneririz. Modülünüzü içeri aktarmaya hazırlamak için modül klasörüyle aynı ada sahip en az bir .psd1, .psm1 veya PowerShell modülü .dll dosyası oluşturmanız gerekir. Ardından modül klasörünü sıkıştırarak Azure Otomasyonu tek bir dosya olarak içeri aktarabilirsiniz. .zip paketinin adı, kapsanan modül klasörüyle aynı olmalıdır.

PowerShell modülü yazma hakkında daha fazla bilgi edinmek için bkz . PowerShell Betik Modülü Yazma.

Sürüm klasörü

PowerShell yan yana modül sürümü oluşturma, PowerShell'de bir modülün birden fazla sürümünü kullanmanıza olanak tanır. Test edilmiş eski betikleriniz varsa ve yalnızca PowerShell modülünün belirli bir sürümünde çalışıyorsanız ancak diğer betikler aynı PowerShell modülünün daha yeni bir sürümünü gerektiriyorsa bu yararlı olabilir.

PowerShell modüllerini birden çok sürüm içerecek şekilde oluşturmak için modül klasörünü oluşturun ve kullanılabilir olmasını istediğiniz modülün her sürümü için bu modül klasörü içinde bir klasör oluşturun. Aşağıdaki örnekte TestModule adlı modül 1.0.0 ve 2.0.0 olmak üzere iki sürüm sağlar.

TestModule
   1.0.0
   2.0.0

Sürüm klasörlerinin her birinde, bir modülü oluşturan PowerShell .psm1, .psd1 veya PowerShell modülü .dll dosyalarınızı ilgili sürüm klasörüne kopyalayın. Azure Otomasyonu tek bir .zip dosyası olarak içeri aktarabilmesi için modül klasörünü sıkıştırın. Otomasyon yalnızca modülün içeri aktarılan en yüksek sürümünü gösterir ancak modül paketi modülün yan yana sürümlerini içeriyorsa, bunların tümü runbook'larınızda veya DSC yapılandırmalarınızda kullanılabilir.

Otomasyon, aynı paket içinde yan yana sürümler içeren modülleri destekler ancak modül paketi içeri aktarma işlemleri arasında modülün birden çok sürümünün kullanılmasını desteklemez. Örneğin, 1. ve 2. sürümleri içeren A modülünü Otomasyon hesabınıza aktarırsınız. Daha sonra A modülünü 3. ve 4. sürümleri içerecek şekilde güncelleştirirsiniz. Otomasyon hesabınıza aktardığınızda, herhangi bir runbook veya DSC yapılandırmasında yalnızca 3. ve 4. sürümler kullanılabilir. Tüm sürümlerin (1, 2, 3 ve 4) kullanılabilir olmasını istiyorsanız, içeri aktardığınız .zip dosyası 1, 2, 3 ve 4 sürümlerini içermelidir.

Runbook'lar arasında aynı modülün farklı sürümlerini kullanacaksanız, her zaman cmdlet'ini kullanarak Import-Module runbook'unuzda kullanmak istediğiniz sürümü bildirmeniz ve parametresini -RequiredVersion <version>eklemeniz gerekir. Kullanmak istediğiniz sürüm en son sürüm olsa bile. Bunun nedeni runbook işlerinin aynı korumalı alanda çalışabilmesidir. Korumalı alandaki önceki bir iş bunu yapacağını belirttiğinden korumalı alan zaten belirli bir sürüm numarasına ait bir modülü açıkça yüklemişse, bu korumalı alandaki gelecekteki işler bu modülün en son sürümünü otomatik olarak yüklemez. Bunun nedeni, bir sürümünün korumalı alanda zaten yüklü olmasıdır.

Bir DSC kaynağı için, belirli bir sürümü belirtmek için aşağıdaki komutu kullanın:

Import-DscResource -ModuleName <ModuleName> -ModuleVersion <version>

Yardım bilgileri

Modülünüzdeki her cmdlet için bir özet, açıklama ve yardım URI'si ekleyin. PowerShell'de cmdlet'leri için yardım bilgilerini cmdlet'ini Get-Help kullanarak tanımlayabilirsiniz. Aşağıdaki örnekte bir .psm1 modül dosyasında bir özet tanımlama ve yardım URI'si gösterilmektedir.

<#
     .SYNOPSIS
      Gets a Contoso User account
#>
function Get-ContosoUser {
[CmdletBinding](DefaultParameterSetName='UseConnectionObject', `
HelpUri='https://www.contoso.com/docs/information')]
[OutputType([String])]
param(
   [Parameter(ParameterSetName='UserAccount', Mandatory=true)]
   [ValidateNotNullOrEmpty()]
   [string]
   $UserName,

   [Parameter(ParameterSetName='UserAccount', Mandatory=true)]
   [ValidateNotNullOrEmpty()]
   [string]
   $Password,

   [Parameter(ParameterSetName='ConnectionObject', Mandatory=true)]
   [ValidateNotNullOrEmpty()]
   [Hashtable]
   $Connection
)

switch ($PSCmdlet.ParameterSetName) {
   "UserAccount" {
      $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $Password
      Connect-Contoso -Credential $cred
   }
   "ConnectionObject" {
      Connect-Contoso -Connection $Connection
  }
}
}

Bu bilgilerin sağlanması, PowerShell konsolundaki Get-Help cmdlet aracılığıyla yardım metnini gösterir. Bu metin Azure portalında da görüntülenir.

Screenshot of integration module help

Connection type

Modül bir dış hizmete bağlanıyorsa, özel bir tümleştirme modülü kullanarak bir bağlantı türü tanımlayın. Modüldeki her cmdlet, parametre olarak bu bağlantı türünün (bağlantı nesnesi) bir örneğini kabul etmelidir. Kullanıcılar, bağlantı varlığının parametrelerini cmdlet'i her çağırdıklarında cmdlet'in ilgili parametreleriyle eşler.

Use a custom connection in the Azure portal

Aşağıdaki runbook örneği, Contoso kaynaklarına erişmek ve dış hizmetten veri döndürmek için adlı ContosoConnection bir Contoso bağlantı varlığı kullanır. Bu örnekte, alanlar bir PSCredential nesnenin ve Password özelliklerine UserName eşlenir ve ardından cmdlet'ine geçirilir.

$contosoConnection = Get-AutomationConnection -Name 'ContosoConnection'

$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $contosoConnection.UserName, $contosoConnection.Password
Connect-Contoso -Credential $cred
}

Bu davranışa yaklaşmanın daha kolay ve daha iyi bir yolu, bağlantı nesnesini doğrudan cmdlet'e geçirmektir:

$contosoConnection = Get-AutomationConnection -Name 'ContosoConnection'

Connect-Contoso -Connection $contosoConnection
}

Cmdlet'leriniz için benzer davranışları, yalnızca parametreler için bağlantı alanları yerine doğrudan bir bağlantı nesnesini parametre olarak kabul etmelerine izin vererek etkinleştirebilirsiniz. Genellikle, Otomasyon kullanmayan bir kullanıcının bağlantı nesnesi olarak davranacak bir karma tablo oluşturmadan cmdlet'lerinizi çağırabilmesi için her biri için bir parametre kümesi istersiniz. Parametre kümesi UserAccount , bağlantı alanı özelliklerini geçirmek için kullanılır. ConnectionObject bağlantıyı doğrudan geçirmenize olanak tanır.

Çıkış türü

Modülünüzdeki tüm cmdlet'ler için çıkış türünü tanımlayın. Bir cmdlet için çıkış türü tanımlamak, tasarım zamanı IntelliSense'in yazma sırasında cmdlet'in çıkış özelliklerini belirlemeye yardımcı olmasını sağlar. Bu uygulama özellikle tasarım zamanı bilgisinin modülünüzle kolay bir kullanıcı deneyimi için önemli olduğu grafik runbook yazma sırasında yararlıdır.

öğesini ekleyin [OutputType([<MyOutputType>])]; burada MyOutputType geçerli bir türdür. hakkında OutputTypedaha fazla bilgi edinmek için bkz . OutputTypeAttribute İşlevleri Hakkında. Aşağıdaki kod, cmdlet'e ekleme OutputType örneğidir:

function Get-ContosoUser {
[OutputType([String])]
param(
   [string]
   $Parameter1
)
# <script location here>
}

Screenshot of graphical runbook output type

Bu davranış, cmdlet'in PowerShell tümleştirme hizmeti ortamındaki çıktısını çalıştırmak zorunda kalmadan "önceden tür oluşturma" işlevine benzer.

Screenshot of POSH IntelliSense

Cmdlet durumu

Modülünüzdeki tüm cmdlet'leri durum bilgisi olmayan hale getirin. Birden çok runbook işi aynı anda aynı AppDomain işlemde ve korumalı alanda çalıştırılabilir. Bu düzeylerde paylaşılan bir durum varsa, işler birbirini etkileyebilir. Bu davranış aralıklı ve tanılaması zor sorunlara yol açabilir. Burada, yapılmaması gerekenlere bir örnek verilmiştir:

$globalNum = 0
function Set-GlobalNum {
   param(
       [int] $num
   )

   $globalNum = $num
}
function Get-GlobalNumTimesTwo {
   $output = $globalNum * 2

   $output
}

Modül bağımlılığı

Modülün xcopy kullanılarak kopyalanabilir bir pakette tam olarak bulunduğundan emin olun. Otomasyon modülleri, runbook'lar yürütürken Otomasyon korumalı alanlarına dağıtılır. Modüllerin, bunları çalıştıran konaklardan bağımsız olarak çalışması gerekir.

Bir modül paketini sıkıştırıp taşıyabilmeniz ve başka bir konağın PowerShell ortamına aktarıldığında normal şekilde çalışmasını sağlamanız gerekir. Bunun gerçekleşmesi için modülün Otomasyon'a aktarıldığında modül klasörünün dışındaki sıkıştırılmış dosyalara bağımlı olmadığından emin olun.

Modülünüz bir konakta benzersiz kayıt defteri ayarlarına bağlı olmamalıdır. Bir ürün yüklendiğinde yapılan ayarlara örnek olarak verilebilir.

Modül dosyası yolları

Modüldeki tüm dosyaların 140 karakterden az karakter içeren yollara sahip olduğundan emin olun. Uzunluğu 140 karakterden uzun olan tüm yollar runbook'ları içeri aktarmayla ilgili sorunlara neden olur. Otomasyon, yol boyutu 140 karakterden fazla olan bir dosyayı ile Import-ModulePowerShell oturumuna aktaramaz.

Modülleri içeri aktarma

Bu bölüm, otomasyon hesabınıza bir modülü içeri aktarmanın çeşitli yollarını tanımlar.

Azure portalında modülleri içeri aktarma

Azure portalda bir modülü içeri aktarmak için:

  1. Portalda Otomasyon Hesapları'nı bulun ve seçin.
  2. Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
  3. Paylaşılan Kaynaklar'ın altında Modüller'i seçin.
  4. Modül ekleyin’i seçin.
  5. Modülünüzü içeren .zip dosyasını seçin.
  6. İşlemi içeri aktarmaya başlamak için Tamam'ı seçin.

PowerShell kullanarak modülleri içeri aktarma

Bir modülü Otomasyon hesabınıza aktarmak için New-AzAutomationModule cmdlet'ini kullanabilirsiniz. cmdlet'i bir modül .zip paketi için BIR URL alır.

New-AzAutomationModule -Name <ModuleName> -ContentLinkUri <ModuleUri> -ResourceGroupName <ResourceGroupName> -AutomationAccountName <AutomationAccountName>

Modülü doğrudan PowerShell Galerisi içeri aktarmak için de aynı cmdlet'i kullanabilirsiniz. PowerShell Galerisi alıp almayı ModuleNameModuleVersion unutmayın.

$moduleName = <ModuleName>
$moduleVersion = <ModuleVersion>
New-AzAutomationModule -AutomationAccountName <AutomationAccountName> -ResourceGroupName <ResourceGroupName> -Name $moduleName -ContentLinkUri "https://www.powershellgallery.com/api/v2/package/$moduleName/$moduleVersion"

PowerShell Galerisi modülleri doğrudan Galeri'den veya Otomasyon hesabınızdan içeri aktarabilirsiniz.

Modülü doğrudan PowerShell Galerisi içeri aktarmak için:

  1. adresine https://www.powershellgallery.com gidin ve içeri aktaracak modülü arayın.
  2. Yükleme Seçenekleri'nin altındaki Azure Otomasyonu sekmesinde Azure Otomasyonu dağıt'ı seçin. Bu eylem Azure portalını açar.
  3. İçeri Aktar sayfasında Otomasyon hesabınızı ve ardından Tamam'ı seçin.

Screenshot of the PowerShell Gallery import module

Bir PowerShell Galerisi modülünü doğrudan Otomasyon hesabınızdan içeri aktarmak için:

  1. Portalda Otomasyon Hesapları'nı bulun ve seçin.
  2. Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
  3. Paylaşılan Kaynaklar'ın altında Modüller'i seçin.
  4. Galeriye gözat'ı seçin ve galeride modül arayın.
  5. İçeri aktaracak modülü seçin ve İçeri Aktar'ı seçin.
  6. İçeri aktarma işlemini başlatmak için Tamam'ı seçin.

Screenshot of importing a PowerShell Gallery module from the Azure portal

Modülleri silme

Modülle ilgili sorunlarınız varsa veya modülün önceki bir sürümüne geri dönmeniz gerekiyorsa, bunu Otomasyon hesabınızdan silebilirsiniz. Otomasyon hesabı oluştururken içeri aktarılan varsayılan modüllerin özgün sürümlerini silemezsiniz. Silinecek modül, varsayılan modüllerden birinin daha yeni bir sürümüyse, Otomasyon hesabınızla birlikte yüklenen sürüme geri döner. Aksi takdirde, Otomasyon hesabınızdan sildiğiniz tüm modüller kaldırılır.

Azure portalda modülleri silin

Azure portalda bir modülü kaldırmak için:

  1. Portalda Otomasyon Hesapları'nı bulun ve seçin.
  2. Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
  3. Paylaşılan Kaynaklar'ın altında Modüller'i seçin.
  4. Kaldırmak istediğiniz modülü seçin.
  5. Modül sayfasında Sil'i seçin. Bu modül varsayılan modüllerden biriyse Otomasyon hesabı oluşturulduğunda var olan sürüme geri döner.

PowerShell kullanarak modülleri silme

PowerShell aracılığıyla bir modülü kaldırmak için aşağıdaki komutu çalıştırın:

Remove-AzAutomationModule -Name <moduleName> -AutomationAccountName <automationAccountName> -ResourceGroupName <resourceGroupName>

Sonraki adımlar