Aracılığıyla paylaş


Azure Logic Apps'te Standart iş akışlarıyla PowerShell betikleri ekleme ve çalıştırma

Şunlar için geçerlidir: Azure Logic Apps (Standart)

Azure Logic Apps'te Standart iş akışınızla satır içinde özel tümleştirme görevleri gerçekleştirmek için iş akışınızın içinden doğrudan PowerShell kodu ekleyebilir ve çalıştırabilirsiniz. Bu görev için PowerShell Kodunu Yürüt adlı Satır içi Kod eylemini kullanın. Bu eylem, iş akışınızın sonraki eylemlerinde bu çıkışı kullanabilmeniz için PowerShell kodunuzdan sonuçları döndürür.

Bu özellik aşağıdaki avantajları sağlar:

  • Karmaşık tümleştirme zorluklarını çözebilmeniz için iş akışı tasarımcısında kendi betiklerinizi yazın. Başka hizmet planı gerekmez.

    Bu avantaj karmaşıklığı ve maliyeti azaltır çünkü daha fazla hizmeti yönetebilir ve iş akışı geliştirmeyi kolaylaştırabilirsiniz.

  • İş akışınızda kişiselleştirilmiş bir betik alanı sağlayan ayrılmış bir kod dosyası oluşturun.

  • Gelişmiş görev yürütme için güçlü işlevler ve devralma sağlayan Azure İşlevleri PowerShell işlevleriyle tümleştirme.

  • betikleri iş akışlarınızla birlikte dağıtın.

Bu kılavuzda, eylemin iş akışınıza nasıl ekleneceği ve çalıştırmak istediğiniz PowerShell kodunun nasıl ekleneceği gösterilir.

Önkoşullar

  • Bir Azure hesabı ve aboneliği Ücretsiz bir Azure hesabı edinin.

  • PowerShell betiğinizi eklemek istediğiniz iş akışına sahip Standart mantıksal uygulama kaynağı.

    İş akışının zaten bir tetikleyiciyle başlaması gerekir. Senaryonuz için herhangi bir tetikleyici kullanabilirsiniz, ancak örnek olarak, bu kılavuz http isteği alındığında adlı İstektetikleyicisini ve yanıt eylemini kullanır. İş akışı, başka bir uygulama veya iş akışı tetikleyicinin uç nokta URL'sine istek gönderdiğinde çalışır. Örnek betik, sonraki eylemlerde kullanabileceğiniz çıkış olarak kod yürütme sonuçlarını döndürür.

    Mantıksal uygulama kaynağınız ve iş akışınız yoksa şu adımları izleyerek bunları şimdi oluşturun:

Dikkat edilmesi gereken noktalar

  • Azure portalı betiğinizi powershell betik dosyası (.ps1) olarak workflow.json dosyanızla aynı klasöre kaydeder. Bu klasör, iş akışınız için JSON tanımını depolar ve dosyayı iş akışı tanımıyla birlikte mantıksal uygulama kaynağınıza dağıtır.

    .ps1 dosya biçimi, daha az "şablon kodu" yazmanıza ve yalnızca PowerShell kodu yazmaya odaklanmanıza olanak tanır. Eylemi yeniden adlandırırsanız, dosya da yeniden adlandırılır, ancak tam tersi olmaz. Dosyayı doğrudan yeniden adlandırırsanız, yeniden adlandırılan sürüm önceki sürümün üzerine yazar. Eylem adı ve dosya adları eşleşmiyorsa, eylem dosyayı bulamaz ve yeni bir boş dosya oluşturmaya çalışır.

  • Betik iş akışı için yereldir. Aynı betiği diğer iş akışlarında kullanmak için Kudu konsolunda betik dosyasını görüntüleyin ve ardından betiği diğer iş akışlarında yeniden kullanmak üzere kopyalayın.

Sınırlamalar

Veri Akışı Adı Sınırla Notlar
Betik çalıştırma süresi 10 dakika Daha uzun sürelere ihtiyaç duyan senaryolarınız varsa, gereksinimleriniz hakkında daha fazla bilgi sağlamak için ürün geri bildirimi seçeneğini kullanın.
Çıkış boyutu 100 MB Çıkış boyutu, eylemler için çıkış boyutu sınırına bağlıdır ve bu sınır genellikle 100 MB'tır.

PowerShell sürümünü güncelleştirme

Uygulama ayarlarını düzenleyerek mantıksal uygulama kaynağınızdaki PowerShell sürümünü değiştirebilirsiniz. Ancak, uygulamanızı yükseltmeden önce aşağıdaki noktaları gözden geçirin:

Not

Varsayılan olarak, PowerShell sürümü belirtmezseniz Azure Logic Apps, Azure İşlevleri ile aynı varsayılan sürümü kullanır. Şu anda PowerShell 7.4 genel kullanıma sunulmuştur. Kullanılabilir sürümler hakkında daha fazla bilgi için bkz. Azure İşlevleri PowerShell geliştirici kılavuzu.

PowerShell sürümünü güncelleştirmek istediğiniz yere bağlı olarak, ilgili adımları izleyin:

  1. Azure portalında Standart mantıksal uygulama kaynağınızı açın.

  2. Kaynak kenar çubuğundaki Ayarlar'ın altında Ortam değişkenleri'ni seçin.

  3. Uygulama ayarları sekmesinde + Ekle'yi seçin.

  4. Uygulama ayarı ekle/düzenle bölmesinde aşağıdaki yeni uygulama ayarını ekleyin:

    Parametre Değer Açıklama
    Adı LOGIC_APPS_POWERSHELL_VERSION Uygulama ayarı adı.
    Değer < Powershell-versiyon> PowerShell sürümü, şu anda 7.4.
  5. İşiniz bittiğinde Uygula'yı seçin. Yeniden başlatma uyarısı görüntülendiğinde Devam'ı seçin.

    Mantıksal uygulamanız güncelleştirilmiş sürümle yeniden başlatılır.

PowerShell Kodunu Yürüt eylemini ekleme

  1. Azure portalında Standart mantıksal uygulama kaynağınızı açın.

  2. Kaynak kenar çubuğundaki İş Akışları'nın altında İş Akışları'nı seçin ve ardından boş iş akışınızı seçin.

  3. İş akışı kenar çubuğundaki Araçlar'ın altında tasarımcıyı seçerek iş akışını açın.

  4. Eylem eklemeye yönelik genel adımları izleyerek PowerShell Kodunu Yürüt adlı Satır içi Kod İşlemleri eylemini iş akışınıza ekleyin.

  5. Eylem bilgileri bölmesi açıldıktan sonra, Parametreler sekmesindeki Kod Dosyası kutusunda, önceden doldurulmuş örnek kodu kendi kodunuzla güncelleştirin.

    Aşağıdaki örnekte, örnek betik koduyla eylemin Parametreler sekmesi gösterilmektedir:

    Azure portalı, Standart iş akışı tasarımcısı, İstek tetikleyicisi, Bilgi bölmesi açık PowerShell Kodu Yürüt eylemi ve Yanıt eylemini gösteren ekran görüntüsü. Bilgi bölmesinde örnek PowerShell betiği gösterilir.

    Aşağıdaki örnekte örnek betik kodu gösterilmektedir:

    # Use the following cmdlets to retrieve outputs from prior steps.
    # $triggerOutput = Get-TriggerOutput
    # $ActionOutput = Get-ActionOutput -ActionName <action-name>
    
    $customResponse =  [PSCustomObject]@{
       Message = "Hello world!"
    }
    
    # Use Write-Debug/Write-Host/Write-Output/ to log messages to Application Insights.
    # Write-Host/Write-Output/Write-Debug and 'return' won't return an output to the workflow.
    # Write-Host "Sending to Application Insight logs"
    
    # Use Push-WorkflowOutput to push outputs into subsequent actions.
    Push-WorkflowOutput -Output $customResponse
    

    Aşağıdaki örnekte özel bir örnek betik gösterilmektedir:

    $action = Get-TriggerOutput
    $results = "Hello from PowerShell!"
    Push-WorkflowOutput -Output $results
    
  6. bitirdiğinizde iş akışınızı kaydedin.

İş akışınızı çalıştırdıktan sonra, etkinleştirilmişse Application Insights'ta iş akışı çıkışını gözden geçirebilirsiniz. Daha fazla bilgi için bkz . Application Insights'ta çıkışı görüntüleme.

Betiğinizdeki iş akışı tetikleyicilerine ve eylem çıkışlarına erişme

Tetikleyiciden ve önceki eylemlerden çıkış değerleri, birden çok parametresi olan özel bir nesne kullanılarak döndürülür. Bu çıkışlara erişmek ve istediğiniz değeri döndürdüğünüzden emin olmak için Get-TriggerOutput, Get-ActionOutput ve Push-WorkflowOutput cmdlet'lerinin yanı sıra aşağıdaki tabloda açıklanan uygun parametreleri kullanın, örneğin:

$trigger = Get-TriggerOutput
$statusCode = $trigger.status.ToString();
$action = Get-ActionOutput -ActionName Compose
$actionOutput = $action.outputs['actionOutput'].ToString();
$populatedString = "Send the $statusCode for the trigger status and $actionOutputName."

Push-WorkflowOutput -Output $populatedString

Not

PowerShell'de, karmaşık bir nesnenin içinde JValue türüne sahip bir nesneye başvurursanız ve bu nesneyi bir dizeye eklerseniz, biçim özel durumu alırsınız. Bu hatayı önlemek için kullanın ToString().

Tetikleyici ve eylem yanıtı çıkışları

Aşağıdaki tabloda, Get-ActionOutput veya Get-TriggerOutput çağrısı yaptığınızda oluşturulan çıkışlar listelenmektedir. Dönüş değeri, aşağıdaki çıkışları içeren adlı PowershellWorkflowOperationResultkarmaşık bir nesnedir.

Veri Akışı Adı Tür Açıklama
Adı Dize Tetikleyicinin veya eylemin adı
Giriş JToken Tetikleyiciye veya eyleme geçirilen giriş değerleri
Çıkışlar JToken Yürütülen tetikleyiciden veya eylemden elde edilen çıkışlar
StartTime Tarih ve Saat Tetikleyici veya eylemin başlangıç saati
EndTime Tarih ve Saat Tetikleyicinin veya eylemin bitiş saati
ScheduledTime Tarih ve Saat Tetikleyiciyi veya eylemi çalıştırmak için planlanmış zaman
OriginHistoryName Dize özelliğini kullanan splitOn tetikleyicilerin kaynak geçmişi adı
SourceHistoryName Dize Yeniden aktarılan tetikleyicinin kaynak geçmişi adı
TrackingId Dize İşlem izleme kimliği
Kod Dize Sonucun durum kodu
Statü Dize Tetikleyicinin veya eylemin çalıştırma durumu, örneğin, "Başarılı" veya "Başarısız"
Hata JToken HTTP hata kodu
TrackedProperties JToken Ayarladığınız tüm izlenen özellikler

çıkışları iş akışınıza döndürme

İş akışınıza çıkış döndürmek için Push-WorkflowOutput cmdlet'ini kullanmanız gerekir.

Özel PowerShell komutları

PowerShell Kodunu Yürüt eylemi, iş akışınızla ve iş akışınızdaki diğer işlemlerle etkileşime yönelik aşağıdaki özel PowerShell komutlarını (cmdlet'ler) içerir:

Get-TriggerOutput

İş akışının tetikleyicisinden çıktıyı alır.

Sözdizimi

Get-TriggerOutput

Parametreler

Hiçbiri.

Get-ActionOutput

İş akışındaki başka bir eylemden çıktı alır ve adlı PowershellWorkflowOperationResultbir nesne döndürür.

Sözdizimi

Get-ActionOutput [ -ActionName <String> ]

Parametreler

Parametre Tür Açıklama
ActionName Dize İş akışındaki eylemin adı ve başvurmak istediğiniz çıkış.

Push-WorkflowOutput

PowerShell Kodunu Yürüt eyleminden çıkışı iş akışınıza gönderir ve bu işlem herhangi bir nesne türünü geri geçirebilir. Dönüş değeri null ise, cmdlet'inden null nesne hatası alırsınız.

Not

Write-Debug, Write-Hostve Write-Output cmdlet'leri iş akışınıza değer döndürmez. return deyimi, iş akışınıza da değer döndürmez. Ancak, Application Insights'ta görüntülenen izleme iletilerini yazmak için bu cmdlet'leri kullanabilirsiniz. Daha fazla bilgi için bkz . Microsoft.PowerShell.Utility.

Sözdizimi

Push-WorkflowOutput [-Output <Object>] [-Clobber]

Parametreler

Parametre Tür Açıklama
Çıktı Değişir İş akışına döndürmek istediğiniz çıkış. Bu çıkış herhangi bir türe sahip olabilir.
Clobber Değişir Önceden gönderilen çıkışı geçersiz kılmak için kullanabileceğiniz isteğe bağlı bir anahtar parametresi.

PowerShell kullanarak yönetilen kimlikle erişimin kimliğini doğrulama ve yetkilendirme

Yönetilen kimlikle mantıksal uygulama kaynağınız ve iş akışınız, kodunuzda kimlik bilgileri olmadan Microsoft Entra kimlik doğrulamasını destekleyen herhangi bir Azure hizmetine ve kaynağına erişimi doğrulayabilir ve yetkilendirilebilir.

PowerShell Kodunu Yürüt eyleminin içinden, erişimi etkinleştirdiğiniz diğer Azure kaynaklarında eylemler gerçekleştirebilmeniz için yönetilen kimlikle kimlik doğrulaması yapabilir ve erişimi yetkileyebilirsiniz. Örneğin, bir sanal makineyi yeniden başlatabilir veya başka bir mantıksal uygulama iş akışının çalıştırma ayrıntılarını alabilirsiniz.

Yönetilen kimliği PowerShell Kodunu Yürüt eyleminin içinden kullanmak için şu adımları izlemeniz gerekir:

  1. Mantıksal uygulamanızda yönetilen kimliği ayarlayın ve yönetilen kimlik erişimini hedef Azure kaynağında verin. Ayrıntılı adımlar için bkz . Yönetilen kimliklerle Azure kaynaklarına erişimin ve bağlantıların kimliğini doğrulama.

    Hedef Azure kaynağında aşağıdaki noktaları gözden geçirin:

    • Rol sekmesinde Katkıda Bulunan rolü genellikle yeterlidir.

    • Rol ataması ekle sayfasındaki Üyeler sekmesindeki Erişim ata özelliği için Yönetilen kimlik'i seçtiğinizden emin olun.

    • Üye seç'i seçtikten sonra Yönetilen kimlikleri seçin bölmesinde, kullanmak istediğiniz yönetilen kimliği seçin.

  2. PowerShell Kodunu Yürüt eyleminize ilk deyim olarak aşağıdaki kodu ekleyin:

    Connect-AzAccount -Identity
    
  3. Artık cmdlet'leri ve modülleri kullanarak Azure kaynağıyla çalışabilirsiniz.

Betik dosyasını görüntüleme

  1. Azure portalında Standart mantıksal uygulama kaynağınızı açın.

  2. Kaynak kenar çubuğundaki Geliştirme Araçları'nın altında Gelişmiş Araçlar'ı seçin.

  3. Gelişmiş Araçlar sayfasında Git'i seçerek Kudu konsolunu açın.

  4. Hata ayıklama konsolu menüsünü açın ve CMD'yi seçin.

  5. Mantıksal uygulamanızın kök konumuna gidin: site/wwwroot

  6. bu yol boyunca .ps1 uzantısına sahip dosyayı içeren iş akışınızın klasörüne gidin: site/wwwroot/{workflow-name}

  7. Dosya adının yanındaki Düzenle'yi seçerek dosyayı açın ve görüntüleyin.

Application Insights'ta günlükleri görüntüleme

  1. Azure portalında mantıksal uygulama kenar çubuğundaki İzleme'nin altında Application Insights'ı (İçgörüler'i değil) seçin.

  2. Application Insights kaynağınızın bağlantısını seçin.

  3. Application Insights kaynak kenar çubuğundaki İzleme'nin altında Günlükler'i seçin.

  4. İş akışı yürütmenizdeki izlemeleri veya hataları bulmak için bir sorgu oluşturun, örneğin:

    union traces, errors
    | project TIMESTAMP, message
    

Modül

PowerShell modülleri, çeşitli bileşenler içeren kendi içinde, yeniden kullanılabilir birimlerdir, örneğin:

  • Cmdlet'ler: Belirli görevleri gerçekleştiren tek tek komutlar.
  • Sağlayıcılar: Kayıt defteri veya dosya sistemi gibi veri depolarına sürücü gibi erişim izni verin.
  • İşlevler: Belirli eylemleri gerçekleştiren yeniden kullanılabilir kod blokları.
  • Değişkenler: Modül içinde kullanılacak verileri depolayın.
  • Diğer kaynak türleri.

Modül, PowerShell kodunu düzenleyerek dağıtmayı kolaylaştırır. Örneğin, ilgili işlevleri daha yönetilebilir ve paylaşılabilir hale getirmek için kendi modüllerinizi oluşturabilirsiniz. PowerShell Kodunu Yürüt eylemi hem genel hem de özel PowerShell modüllerini içeri aktarmanıza olanak tanır.

Genel modüller

Genel kullanıma açık modülleri bulmak için PowerShell galerisini ziyaret edin. Standart mantıksal uygulama kaynağı en fazla 10 genel modülü destekleyebilir. Herhangi bir genel modülü kullanmak için aşağıdaki adımları izleyerek bu özelliği etkinleştirmeniz gerekir:

  1. Azure portalında mantıksal uygulama kenar çubuğundaki Geliştirme Araçları'nın altında Gelişmiş Araçlar'ı seçin.

  2. Gelişmiş Araçlar sayfasında Git'i seçin.

  3. Kudu araç çubuğunda, Hata ayıklama konsolu menüsünden CMD'yi seçin.

  4. Dizin yapısını veya komut satırını kullanarak C:\home\site\wwwroot konumunda mantıksal uygulamanızın kök düzeyine göz atın.

  5. İş akışının host.json dosyasını açın ve ManagedDependency.enabled özelliğini, varsayılan olarak zaten ayarlanmış olan true değerine ayarlayın.

    "managedDependency": {
        "enabled": true
    }
    
  6. requirements.psd1 adlı dosyayı açın. Aşağıdaki söz dizimini kullanarak istediğiniz modülün adını ve sürümünü ekleyin: MajorNumber.* veya tam modül sürümü, örneğin:

    @{
        Az = '1.*'
        SqlServer = '21.1.18147'
    } 
    

Genel modüller için dikkat edilmesi gerekenler

Bağımlılık yönetimini kullanıyorsanız aşağıdaki noktalar geçerlidir:

  • Modülleri indirmek için genel modüllerin PowerShell Galerisi erişmesi gerekir.

  • Yönetilen bağımlılıklar şu anda lisansı etkileşimli olarak kabul ederek veya -AcceptLicense çalıştırdığınızda seçeneği sağlayarak lisans kabul etmenizi gerektiren modülleri desteklememektedir.

Özel modüller

Kendi özel PowerShell modüllerinizi oluşturabilirsiniz. İlk PowerShell modülünüzü oluşturmak için bkz . PowerShell Betik Modülü Yazma.

  1. Azure portalında mantıksal uygulama kaynak kenar çubuklarınızda Geliştirme Araçları'nın altında Gelişmiş Araçlar'ı seçin.

  2. Gelişmiş Araçlar sayfasında Git'i seçin.

  3. Kudu araç çubuğunda, Hata ayıklama konsolu menüsünden CMD'yi seçin.

  4. Dizin yapısını veya komut satırını kullanarak C:\home\site\wwwroot konumunda mantıksal uygulamanızın kök düzeyine göz atın.

  5. Modules adlı bir klasör oluşturun.

  6. Modüller klasöründe, özel modülünüzle aynı ada sahip bir alt klasör oluşturun.

  7. Özel modül klasörünüzde özel PowerShell modül dosyanızı .psm1 uzantısıyla ekleyin. .psd1 uzantısına sahip isteğe bağlı bir PowerShell bildirim dosyası da ekleyebilirsiniz.

İşiniz bittiğinde, tam mantıksal uygulama dosya yapınız aşağıdaki örneğe benzer şekilde görünür:

MyLogicApp
-- execute_powershell_script.ps1
-- mytestworkflow.json
Modules
-- MyPrivateModule
--- MyPrivateModule.psd1
--- MyPrivateModule.psm1
-- MyPrivateModule2
--- MyPrivateModule2.psd1
--- MyPrivateModule2.psm1
requirements.psd1
host.json

Derleme hataları

Bu sürümde web tabanlı düzenleyici sınırlı IntelliSense desteği içeriyor ve bu destek hala geliştiriliyor. İş akışınızı kaydettiğinizde tüm derleme hataları algılandı ve Azure Logic Apps çalışma zamanı betiğinizi derler. Bu hatalar, Application Insights aracılığıyla mantıksal uygulamanızın hata günlüklerinde görünür.

Çalışma zamanı hataları

İş akışı eylemi herhangi bir çıkış döndürmez.

Push-WorkflowOutput cmdlet'i kullandığınızdan emin olun.

PowerShell Code yürütme eylemi başarısız oluyor: "'{some-text}' terimi tanınmıyor..."

requirements.psd1 dosyasında bir genel modüle yanlış başvurursanız veya özel modülünüz C:\home\site\wwwroot\Modules{module-name} yolunda yoksa aşağıdaki hatayı alırsınız:

"'{some-text}' terimi bir cmdlet, işlev, betik dosyası veya yürütülebilir program adı olarak tanınmıyor. Adın yazımını denetleyin veya bir yol eklenip eklenmediğini denetleyin, yolun doğru olduğunu doğrulayın ve yeniden deneyin."

Not

Varsayılan olarak, Az* modülleri requirements.psd1 dosyasında görünür, ancak dosya oluşturma sırasında açıklama eklenir. Modülden bir cmdlet'e başvurarak modülün açıklamasını kaldırdığınızdan emin olun.

PowerShell Code yürütme eylemi başarısız oluyor: "Bağımsız değişken null olduğundan 'Output' parametresine bağlanamıyor."

Bu hata, iş akışına null bir nesne göndermeye çalıştığınızda oluşur. Birlikte Push-WorkflowOutput gönderdiğiniz nesnenin null olmadığını onaylayın.