Dodawanie i uruchamianie kodu skryptu programu PowerShell w standardowych przepływach pracy dla usługi Azure Logic Apps (wersja zapoznawcza)
Dotyczy: Azure Logic Apps (Standardowa)
Uwaga
Ta funkcja jest dostępna w wersji zapoznawczej i podlega dodatkowym warunkom użytkowania wersji zapoznawczej platformy Microsoft Azure.
Aby wykonać niestandardowe zadania integracji wbudowane za pomocą przepływu pracy w warstwie Standardowa w usłudze Azure Logic Apps, możesz bezpośrednio dodać i uruchomić kod programu PowerShell z poziomu przepływu pracy. W tym zadaniu użyj akcji Kodu wbudowanego o nazwie Wykonaj kod programu PowerShell. Ta akcja zwraca wyniki z kodu programu PowerShell, aby można było użyć tych danych wyjściowych w kolejnych akcjach przepływu pracy.
Ta funkcja zapewnia następujące korzyści:
Napisz własne skrypty w projektancie przepływu pracy, aby móc rozwiązywać złożone wyzwania związane z integracją. Nie są potrzebne żadne inne plany usług.
Ta korzyść usprawnia opracowywanie przepływów pracy oraz zmniejsza złożoność i koszty związane z zarządzaniem większą ilością usług.
Wygeneruj dedykowany plik kodu, który zapewnia spersonalizowaną przestrzeń skryptów w przepływie pracy.
Integracja z usługą Azure Functions PowerShell Functions, która zapewnia zaawansowane funkcje i dziedziczenie na potrzeby zaawansowanego wykonywania zadań.
Wdróż skrypty obok przepływów pracy.
W tym przewodniku pokazano, jak dodać akcję w przepływie pracy i dodać kod programu PowerShell, który chcesz uruchomić.
Wymagania wstępne
Konto i subskrypcja platformy Azure. Jeśli nie masz subskrypcji, zarejestruj się w celu założenia bezpłatnego konta platformy Azure.
Przepływ pracy standardowej aplikacji logiki, w którym chcesz dodać skrypt programu PowerShell. Przepływ pracy musi już rozpoczynać się od wyzwalacza. Aby uzyskać więcej informacji, zobacz Tworzenie przykładowych przepływów pracy aplikacji logiki w warstwie Standardowa.
W tym scenariuszu można użyć dowolnego wyzwalacza, ale na przykład w tym przewodniku jest używany wyzwalacz żądania o nazwie Po odebraniu żądania HTTP, a także akcji Odpowiedź. Przepływ pracy jest uruchamiany, gdy inna aplikacja lub przepływ pracy wysyła żądanie do adresu URL punktu końcowego wyzwalacza. Przykładowy skrypt zwraca wyniki wykonania kodu jako dane wyjściowe, których można użyć w kolejnych akcjach.
Kwestie wymagające rozważenia
Witryna Azure Portal zapisuje skrypt jako plik skryptu programu PowerShell (ps1) w tym samym folderze co plik workflow.json , który przechowuje definicję JSON przepływu pracy i wdraża plik w zasobie aplikacji logiki wraz z definicją przepływu pracy.
Format pliku ps1 umożliwia zapisanie mniej "standardowy" i skupienie się tylko na pisaniu kodu programu PowerShell. Jeśli zmienisz nazwę akcji, nazwa pliku również zostanie zmieniona, ale nie odwrotnie. Jeśli plik zostanie bezpośrednio zmieniony, zmieniona wersja zastępuje poprzednią wersję. Jeśli nazwa akcji i nazwy plików nie są zgodne, akcja nie może odnaleźć pliku i spróbuje utworzyć nowy pusty plik.
Skrypt jest lokalny dla przepływu pracy. Aby użyć tego samego skryptu w innych przepływach pracy, wyświetl plik skryptu w konsoli KuduPlus, a następnie skopiuj skrypt do ponownego użycia w innych przepływach pracy.
Ograniczenia
Nazwisko | Ograniczenie | Uwagi |
---|---|---|
Czas trwania uruchamiania skryptu | 10 min | Jeśli masz scenariusze, które wymagają dłuższego czasu trwania, użyj opcji opinii o produkcie, aby uzyskać więcej informacji na temat Twoich potrzeb. |
Rozmiar danych wyjściowych | 100 MB | Rozmiar danych wyjściowych zależy od limitu rozmiaru danych wyjściowych dla akcji, czyli zazwyczaj 100 MB. |
Dodawanie akcji Wykonaj kod programu PowerShell
W witrynie Azure Portal otwórz zasób aplikacji logiki w warstwie Standardowa i przepływ pracy w projektancie.
W projektancie wykonaj następujące ogólne kroki, aby dodać akcję Operacje kodu wbudowanego o nazwie Wykonaj kod programu PowerShell do przepływu pracy.
Po otworze okienka informacji o akcji na karcie Parametry w polu Plik kodu zaktualizuj wstępnie wypełniony przykładowy kod własnym kodem.
Aby uzyskać dostęp do danych pochodzących z przepływu pracy, zobacz Temat Access workflow trigger and action outputs in your script (Wyzwalacz przepływu pracy programu Access i dane wyjściowe akcji) w skry skrycie w dalszej części tego przewodnika.
Aby zwrócić wyniki skryptu lub inne dane do przepływu pracy, zobacz Zwracanie danych do przepływu pracy.
W poniższym przykładzie pokazano kartę Parametry akcji z przykładowym kodem skryptu:
Poniższy przykład przedstawia przykładowy kod skryptu:
# 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
W poniższym przykładzie pokazano niestandardowy przykładowy skrypt:
$action = Get-TriggerOutput $results = "Hello from PowerShell!" Push-WorkflowOutput -Output $results
Po zakończeniu zapisz przepływ pracy.
Po uruchomieniu przepływu pracy możesz przejrzeć dane wyjściowe przepływu pracy w usłudze Application Insights, jeśli są włączone. Aby uzyskać więcej informacji, zobacz Wyświetlanie danych wyjściowych w usłudze Application Insights.
Uzyskiwanie dostępu do wyzwalacza przepływu pracy i danych wyjściowych akcji w skrycie
Wartości wyjściowe z wyzwalacza i poprzednich akcji są zwracane przy użyciu obiektu niestandardowego, który ma wiele parametrów. Aby uzyskać dostęp do tych danych wyjściowych i upewnić się, że zwracasz odpowiednią wartość, użyj poleceń cmdlet Get-TriggerOutput, Get-ActionOutput i Push-WorkflowOutput oraz wszelkich odpowiednich parametrów opisanych w poniższej tabeli, na przykład:
$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
Uwaga
W programie PowerShell, jeśli odwołujesz się do obiektu o typie JValue wewnątrz obiektu złożonego i dodasz ten obiekt do ciągu, otrzymasz wyjątek formatu. Aby uniknąć tego błędu, użyj metody ToString().
Dane wyjściowe odpowiedzi wyzwalacza i akcji
W poniższej tabeli wymieniono dane wyjściowe generowane podczas wywoływania metody Get-ActionOutput lub Get-TriggerOutput. Wartość zwracana jest obiektem złożonym o nazwie PowershellWorkflowOperationResult, który zawiera następujące dane wyjściowe.
Nazwisko | Pisz | opis |
---|---|---|
Nazwa/nazwisko | String | Nazwa wyzwalacza lub akcji. |
Wejścia | JToken | Wartości wejściowe przekazane do wyzwalacza lub akcji. |
Dane wyjściowe | JToken | Dane wyjściowe z wykonanego wyzwalacza lub akcji. |
Godzina rozpoczęcia | DateTime | Godzina rozpoczęcia wyzwalacza lub akcji. |
Godzina zakończenia | DateTime | Godzina zakończenia wyzwalacza lub akcji. |
ScheduledTime | DateTime | Zaplanowany czas uruchamiania wyzwalacza lub akcji lub wyzwalacza. |
OriginHistoryName | String | Nazwa historii źródła wyzwalaczy z włączoną opcją Split-On (Podział). |
SourceHistoryName | String | Nazwa historii źródła dla ponownie zwróconego wyzwalacza. |
Identyfikator śledzenia | String | Identyfikator śledzenia operacji. |
Kod | String | Kod stanu dla wyniku. |
Stan | String | Stan uruchomienia wyzwalacza lub akcji, na przykład Powodzenie lub Niepowodzenie. |
Błąd | JToken | Kod błędu HTTP. |
Śledzone właściwości | JToken | Wszystkie skonfigurowane właściwości śledzone. |
Zwracanie danych wyjściowych do przepływu pracy
Aby zwrócić wszystkie dane wyjściowe do przepływu pracy, należy użyć polecenia cmdlet Push-WorkflowOutput.
Niestandardowe polecenia programu PowerShell
Akcja Wykonaj kod programu PowerShell obejmuje następujące niestandardowe polecenia programu PowerShell (polecenia cmdlet) umożliwiające interakcję z przepływem pracy i innymi operacjami w przepływie pracy:
Get-TriggerOutput
Pobiera dane wyjściowe z wyzwalacza przepływu pracy.
Składnia
Get-TriggerOutput
Parametry
Brak.
Get-ActionOutput
Pobiera dane wyjściowe z innej akcji w przepływie pracy i zwraca obiekt o nazwie PowershellWorkflowOperationResult.
Składnia
Get-ActionOutput [ -ActionName <String> ]
Parametry
Parametr | Type | Opis |
---|---|---|
Nazwa akcji | String | Nazwa akcji w przepływie pracy z danymi wyjściowymi, do których chcesz się odwołać. |
Wypychanie przepływu pracyOutput
Wypycha dane wyjściowe z akcji Wykonaj kod programu PowerShell do przepływu pracy, co może przekazać dowolny typ obiektu. Jeśli zwracana wartość ma wartość null, zostanie wyświetlony błąd obiektu null z polecenia cmdlet.
Uwaga
Polecenia cmdlet Write-Debug, Write-Host i Write-Output nie zwracają wartości do przepływu pracy. Instrukcja return nie zwraca również wartości do przepływu pracy. Można jednak użyć tych poleceń cmdlet do zapisywania komunikatów śledzenia wyświetlanych w usłudze Application Insights. Aby uzyskać więcej informacji, zobacz Microsoft.PowerShell.Utility.
Składnia
Push-WorkflowOutput [-Output <Object>] [-Clobber]
Parametry
Parametr | Type | Opis |
---|---|---|
Wyjście | Różni się. | Dane wyjściowe, które mają zostać zwrócone do przepływu pracy. Te dane wyjściowe mogą mieć dowolny typ. |
Clobber | Różni się. | Opcjonalny parametr przełącznika, którego można użyć do zastąpienia wcześniej wypchniętych danych wyjściowych. |
Uwierzytelnianie i autoryzacja dostępu przy użyciu tożsamości zarządzanej przy użyciu programu PowerShell
Za pomocą tożsamości zarządzanej zasób aplikacji logiki i przepływ pracy mogą uwierzytelniać i autoryzować dostęp do dowolnej usługi i zasobu platformy Azure, który obsługuje uwierzytelnianie firmy Microsoft Entra bez dołączania poświadczeń w kodzie.
W ramach akcji Wykonaj kod programu PowerShell możesz uwierzytelnić i autoryzować dostęp przy użyciu tożsamości zarządzanej, aby można było wykonywać akcje w innych zasobach platformy Azure, w których włączono dostęp. Możesz na przykład ponownie uruchomić maszynę wirtualną lub uzyskać szczegóły przebiegu innego przepływu pracy aplikacji logiki.
Aby użyć tożsamości zarządzanej z poziomu akcji Wykonaj kod programu PowerShell, należy wykonać następujące kroki:
Wykonaj następujące kroki, aby skonfigurować tożsamość zarządzaną w aplikacji logiki i udzielić dostępu tożsamości zarządzanej w docelowym zasobie platformy Azure.
W docelowym zasobie platformy Azure zapoznaj się z następującymi zagadnieniami:
Na karcie Rola rola jest zwykle wystarczająca.
Na stronie Dodawanie przypisania roli na karcie Członkowie w polu Przypisz dostęp do właściwości upewnij się, że wybrano opcję Tożsamość zarządzana.
Po wybraniu pozycji Wybierz członków w okienku Wybierz tożsamości zarządzane wybierz tożsamość zarządzaną, której chcesz użyć.
W akcji Wykonaj kod programu PowerShell dołącz następujący kod jako pierwszą instrukcję:
Connect-AzAccount -Identity
Teraz możesz pracować z zasobem platformy Azure przy użyciu poleceń cmdlet i modułów.
Wyświetlanie pliku skryptu
W witrynie Azure Portal otwórz zasób aplikacji logiki w warstwie Standardowa z żądanym przepływem pracy.
W menu zasobów aplikacji logiki w obszarze Narzędzia programistyczne wybierz pozycję Narzędzia zaawansowane.
Na stronie Narzędzia zaawansowane wybierz pozycję Przejdź, co spowoduje otwarcie konsoli KuduPlus.
Otwórz menu Konsola debugowania i wybierz pozycję CMD.
Przejdź do głównej lokalizacji aplikacji logiki: site/wwwroot
Przejdź do folderu przepływu pracy, który zawiera plik .ps1, wzdłuż tej ścieżki: site/wwwroot/{workflow-name}
Obok nazwy pliku wybierz pozycję Edytuj , aby otworzyć i wyświetlić plik.
Wyświetlanie dzienników w usłudze Application Insights
W witrynie Azure Portal w menu zasobów aplikacji logiki w obszarze Ustawienia wybierz pozycję Application Insights, a następnie wybierz aplikację logiki.
W menu usługi Application Insights w obszarze Monitorowanie wybierz pozycję Dzienniki.
Utwórz zapytanie, aby znaleźć wszelkie ślady lub błędy z wykonania przepływu pracy, na przykład:
union traces, errors | project TIMESTAMP, message
Moduły
Moduły programu PowerShell to samodzielne jednostki wielokrotnego użytku, które obejmują różne składniki, na przykład:
- Polecenia cmdlet: poszczególne polecenia, które wykonują określone zadania.
- Dostawcy: zezwalaj na dostęp do magazynów danych, takich jak rejestr lub system plików, tak jakby były dyskami.
- Funkcje: bloki kodu wielokrotnego użytku, które wykonują określone akcje.
- Zmienne: przechowywanie danych do użycia w module.
- Inne typy zasobów.
Moduł organizuje kod programu PowerShell, co ułatwia dystrybucję. Możesz na przykład utworzyć własne moduły, aby spakować i zwiększyć możliwości zarządzania powiązanymi funkcjami i udostępniać je. Akcja Wykonaj kod programu PowerShell umożliwia importowanie zarówno publicznych, jak i prywatnych modułów programu PowerShell.
Moduły publiczne
Aby znaleźć publicznie dostępne moduły, odwiedź galerię programu PowerShell. Zasób standardowej aplikacji logiki może obsługiwać maksymalnie 10 modułów publicznych. Aby użyć dowolnego modułu publicznego, należy włączyć tę funkcję, wykonując następujące kroki:
W witrynie Azure Portal w menu zasobów aplikacji logiki w obszarze Narzędzia programistyczne wybierz pozycję Narzędzia zaawansowane.
Na stronie Narzędzia zaawansowane wybierz pozycję Przejdź.
Na pasku narzędzi Kudu Plus z menu Konsola debugowania wybierz pozycję CMD.
Przejdź do poziomu głównego aplikacji logiki w katalogu C:\home\site\wwwroot przy użyciu struktury katalogów lub wiersza polecenia.
Otwórz plik host.json przepływu pracy i ustaw właściwość zależności zarządzanej na true, która jest już ustawiona domyślnie.
"managedDependency": { "enabled": true }
Otwórz plik o nazwie requirements.psd1. Uwzględnij nazwę i wersję modułu, który ma być używany przy użyciu następującej składni: MajorNumber.* lub dokładna wersja modułu, na przykład:
@{ Az = '1.*' SqlServer = '21.1.18147' }
Zagadnienia dotyczące modułów publicznych
W przypadku korzystania z zarządzania zależnościami mają zastosowanie następujące zagadnienia:
Aby pobrać moduły, publiczne moduły wymagają dostępu do Galeria programu PowerShell.
Zależności zarządzane obecnie nie obsługują modułów, które wymagają zaakceptowania licencji, akceptując licencję interaktywnie lub podając opcję -AcceptLicense podczas uruchamiania polecenia Install-Module.
Moduły prywatne
Możesz wygenerować własne prywatne moduły programu PowerShell. Aby utworzyć pierwszy moduł programu PowerShell, zobacz Pisanie modułu skryptu programu PowerShell.
W witrynie Azure Portal w menu zasobów aplikacji logiki w obszarze Narzędzia programistyczne wybierze pozycję Narzędzia zaawansowane.
Na stronie Narzędzia zaawansowane wybierz pozycję Przejdź.
Na pasku narzędzi Kudu Plus z menu Konsola debugowania wybierz pozycję CMD.
Przejdź do poziomu głównego aplikacji logiki w katalogu C:\home\site\wwwroot przy użyciu struktury katalogów lub wiersza polecenia.
Utwórz folder o nazwie Modules.
W folderze Modules utwórz podfolder o takiej samej nazwie jak moduł prywatny.
W folderze modułu prywatnego dodaj prywatny plik modułu programu PowerShell z rozszerzeniem nazwy pliku psm1 . Możesz również dołączyć opcjonalny plik manifestu programu PowerShell z rozszerzeniem nazwy pliku psd1 .
Po zakończeniu kompletna struktura pliku aplikacji logiki będzie wyglądać podobnie do poniższego przykładu:
MyLogicApp
-- execute_powershell_script.ps1
-- mytestworkflow.json
Modules
-- MyPrivateModule
--- MyPrivateModule.psd1
--- MyPrivateModule.psm1
-- MyPrivateModule2
--- MyPrivateModule2.psd1
--- MyPrivateModule2.psm1
requirements.psd1
host.json
Błędy kompilacji
W tej wersji edytor internetowy zawiera ograniczoną obsługę funkcji IntelliSense, która jest nadal poprawa. Wszelkie błędy kompilacji są wykrywane podczas zapisywania przepływu pracy, a środowisko uruchomieniowe usługi Azure Logic Apps kompiluje skrypt. Te błędy są wyświetlane w dziennikach błędów aplikacji logiki za pośrednictwem usługi Application Insights.
Błędy środowiska uruchomieniowego
Akcja przepływu pracy nie zwraca żadnych danych wyjściowych.
Upewnij się, że używasz polecenia cmdlet Push-WorkflowOutput .
Wykonanie akcji kodu programu PowerShell kończy się niepowodzeniem: "Termin {some-text}" nie jest rozpoznawany..."
Jeśli niepoprawnie odwołujesz się do publicznego modułu w pliku requirements.psd1 lub gdy moduł prywatny nie istnieje w następującej ścieżce: C:\home\site\wwwroot\Modules{module-name}, zostanie wyświetlony następujący błąd:
Termin "{some-text}" nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub programu wykonywalnego. Sprawdź pisownię nazwy lub jeśli dołączono ścieżkę, sprawdź, czy ścieżka jest poprawna i spróbuj ponownie.
Uwaga
Domyślnie moduły Az* są wyświetlane w pliku requirements.psd1 , ale są one komentowane podczas tworzenia pliku. Jeśli odwołujesz się do polecenia cmdlet z modułu, pamiętaj o usunięciu komentarza z modułu.
Wykonanie akcji kodu programu PowerShell kończy się niepowodzeniem: "Nie można powiązać argumentu z parametrem "Output", ponieważ ma wartość null".
Ten błąd występuje, gdy próbujesz wypchnąć obiekt o wartości null do przepływu pracy. Upewnij się, że obiekt, który wysyłasz za pomocą funkcji Push-WorkflowOutput , nie ma wartości null.