{"id":2646,"date":"2026-09-26T09:01:55","date_gmt":"2026-09-26T07:01:55","guid":{"rendered":"https:\/\/au2mator.com\/?p=2646"},"modified":"2026-10-23T14:59:50","modified_gmt":"2026-10-23T12:59:50","slug":"azure-automation-runbook","status":"publish","type":"post","link":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/","title":{"rendered":"Azure Automation Runbook"},"content":{"rendered":"\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;500;600;700;800&display=swap');\n\n.au2-runbook-content{\n  --green:#8bc34a;\n  --dark:#29292a;\n  --grey:#54595f;\n  max-width:800px;\n  margin:0 auto;\n  padding:0 24px 40px;\n  font-family:Montserrat,Arial,sans-serif;\n  color:var(--dark);\n  line-height:1.7;\n}\n.au2-runbook-content h2{\n  font-weight:700;\n  font-size:24px;\n  line-height:1.2;\n  margin:10px 0 18px;\n  color:var(--dark);\n}\n.au2-runbook-content h3{\n  font-weight:600;\n  font-size:18px;\n  margin:28px 0 10px;\n  color:var(--dark);\n}\n.au2-runbook-content p{\n  font-size:16px;\n  margin:0 0 18px;\n}\n.au2-runbook-content li{\n  font-size:16px;\n  margin-bottom:8px;\n}\n.au2-runbook-content hr.wp-block-separator{\n  border:0;\n  height:2px;\n  background:var(--green);\n  margin:40px 0;\n}\n.au2-runbook-content figure{\n  margin:24px 0 34px;\n  text-align:center;\n}\n.au2-runbook-content figure svg{\n  display:block;\n  max-width:100%;\n  height:auto;\n}\n.au2-runbook-content figcaption{\n  font-size:13px;\n  color:var(--grey);\n  margin-top:8px;\n}\n.au2-runbook-content .wp-block-table{\n  overflow-x:auto;\n}\n.au2-runbook-content .wp-block-table table{\n  border-collapse:collapse;\n  width:100%;\n  font-size:14.5px;\n}\n.au2-runbook-content .wp-block-table th{\n  background:var(--dark);\n  color:#fff;\n  text-align:left;\n  padding:10px 12px;\n  font-weight:600;\n}\n.au2-runbook-content .wp-block-table td{\n  padding:10px 12px;\n  border-bottom:1px solid #e8e8e8;\n  vertical-align:top;\n}\n.au2-runbook-content .wp-block-table tr:nth-child(even) td{\n  background:#f7f8f6;\n}\n.au2-runbook-content pre.wp-block-code{\n  background:#1e1e1f;\n  color:#d4d4d4;\n  padding:18px 20px;\n  border-radius:10px;\n  overflow:auto;\n  font-size:13.5px;\n  line-height:1.55;\n  margin:16px 0 26px;\n  white-space:pre;\n}\n.au2-runbook-content code{\n  font-family:Consolas,Menlo,monospace;\n}\n.au2-runbook-content p code,\n.au2-runbook-content li code{\n  background:#f2f7ea;\n  color:var(--dark);\n  padding:2px 6px;\n  border-radius:4px;\n  font-size:.9em;\n}\n.au2-runbook-content .au2mator-cta p{\n  margin:0 0 12px!important;\n}\n.au2-runbook-content .au2mator-cta p:last-child{\n  margin:0!important;\n}\n.au2-runbook-content .schema-faq-section{\n  padding:16px 0;\n  border-bottom:1px solid #eee;\n}\n.au2-runbook-content .schema-faq-question{\n  display:block;\n  font-size:17px;\n  margin-bottom:6px;\n  font-weight:600;\n}\n.au2-runbook-content a{\n  color:var(--dark);\n  text-decoration:underline;\n  text-decoration-color:var(--green);\n  text-underline-offset:3px;\n}\n<\/style>\n<div class=\"au2-runbook-content\">\n<h2 class=\"wp-block-heading\">Was ist ein Azure Automation Runbook?<\/h2>\n<p class=\"wp-block-paragraph\">Ein <strong>Azure Automation Runbook<\/strong> ist ein Skript in PowerShell oder Python, das in einem Azure Automation-Konto gespeichert wird. Es l\u00e4uft entweder in der Cloud-Sandbox von Microsoft oder \u00fcber einen Hybrid Runbook Worker im eigenen Rechenzentrum. Azure \u00fcbernimmt Hosting, Authentifizierung \u00fcber eine verwaltete Identit\u00e4t (Managed Identity), Zeitplanung, Protokollierung und Speicherung der Ausf\u00fchrungsverl\u00e4ufe. Die eigentliche Automatisierungslogik legst du fest.<\/p>\n<p class=\"wp-block-paragraph\">Microsoft unterscheidet <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/automation\/automation-runbook-types\">f\u00fcnf Runbook-Typen<\/a>, wobei grafische Runbooks in zwei Varianten verf\u00fcgbar sind. F\u00fcr neue Projekte sind vor allem zwei relevant:<\/p>\n<figure class=\"wp-block-table is-style-stripes\"><table>\n<thead><tr><th>Runbook-Typ<\/th><th>Laufzeitumgebung<\/th><th>Geeignet f\u00fcr<\/th><th>Status<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>PowerShell<\/td><td>PowerShell 7.4 \/ 7.6 (5.1 weiterhin verf\u00fcgbar)<\/td><td>Fast alles: Entra ID, Exchange, Azure-Ressourcen und lokales AD \u00fcber Hybrid Worker<\/td><td>Empfohlen<\/td><\/tr>\n<tr><td>Python<\/td><td>Python 3.10<\/td><td>Teams mit Python-Codebasis und Aufgaben mit vielen REST-Aufrufen<\/td><td>Empfohlen<\/td><\/tr>\n<tr><td>PowerShell Workflow<\/td><td>Nur PowerShell 5.1<\/td><td>Checkpoints und parallele Ausf\u00fchrung (\u00e4ltere Anwendungen)<\/td><td>Veraltet, keine PowerShell-7-Unterst\u00fctzung<\/td><\/tr>\n<tr><td>Graphical \/ Graphical Workflow<\/td><td>Generiertes PowerShell 5.1<\/td><td>Visuelle Erstellung per Drag-and-drop<\/td><td>Veraltet, keine Umwandlung in Text m\u00f6glich<\/td><\/tr>\n<\/tbody>\n<\/table><\/figure>\n<p class=\"wp-block-paragraph\">Zwei Punkte sind besonders wichtig: Seit dem 30. September 2023 werden Run As-Konten nicht mehr unterst\u00fctzt. F\u00fcr die Authentifizierung solltest du daher <strong>Managed Identities<\/strong> verwenden. Au\u00dferdem bietet Microsoft inzwischen <strong>Runtime Environments<\/strong>. Damit lassen sich PowerShell-Versionen und Modulversionen je Umgebung festlegen. Ein Modulupdate in einem Runbook beeintr\u00e4chtigt dadurch nicht automatisch andere Runbooks. Falls du noch Runbooks mit PowerShell 7.1 oder 7.2 nutzt, solltest du sie migrieren \u2013 diese Versionen sind abgek\u00fcndigt.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Azure Runbook erstellen, testen, ver\u00f6ffentlichen und ausf\u00fchren<\/h2>\n<p class=\"wp-block-paragraph\">Unabh\u00e4ngig vom sp\u00e4teren Einsatzzweck durchl\u00e4uft jedes Azure Runbook denselben Ablauf:<\/p>\n<figure class=\"wp-block-image size-large\">\n<svg aria-labelledby=\"t\" role=\"img\" viewbox=\"0 0 1200 340\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><title id=\"t\">Lebenszyklus eines Azure Automation Runbooks<\/title><rect fill=\"#FFFFFF\" height=\"340\" width=\"1200\"><\/rect><defs><marker id=\"ar\" markerheight=\"10\" markerwidth=\"10\" orient=\"auto\" refx=\"9\" refy=\"5\"><path d=\"M0,0 L10,5 L0,10 z\" fill=\"#29292A\"><\/path><\/marker><\/defs><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"22\" font-weight=\"bold\" text-anchor=\"middle\" x=\"600\" y=\"40\">Lebenszyklus eines Azure Automation Runbooks<\/text><rect fill=\"#F2F7EA\" height=\"120\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"160\" x=\"20.0\" y=\"90\"><\/rect><circle cx=\"44.0\" cy=\"114\" fill=\"#29292A\" r=\"14\"><\/circle><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"14\" font-weight=\"bold\" text-anchor=\"middle\" x=\"44.0\" y=\"119\">1<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"17\" font-weight=\"bold\" text-anchor=\"middle\" x=\"110.0\" y=\"120\">Erstellen<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"100.0\" y=\"158\">PowerShell 7.4 \/<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"100.0\" y=\"175\">Python 3.10<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"184.0\" x2=\"214.0\" y1=\"150\" y2=\"150\"><\/line><rect fill=\"#F2F7EA\" height=\"120\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"160\" x=\"220.0\" y=\"90\"><\/rect><circle cx=\"244.0\" cy=\"114\" fill=\"#29292A\" r=\"14\"><\/circle><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"14\" font-weight=\"bold\" text-anchor=\"middle\" x=\"244.0\" y=\"119\">2<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"17\" font-weight=\"bold\" text-anchor=\"middle\" x=\"310.0\" y=\"120\">Testen<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"300.0\" y=\"158\">Testbereich,<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"300.0\" y=\"175\">Entwurfsversion<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"384.0\" x2=\"414.0\" y1=\"150\" y2=\"150\"><\/line><rect fill=\"#8BC34A\" height=\"120\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"160\" x=\"420.0\" y=\"90\"><\/rect><circle cx=\"444.0\" cy=\"114\" fill=\"#29292A\" r=\"14\"><\/circle><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"14\" font-weight=\"bold\" text-anchor=\"middle\" x=\"444.0\" y=\"119\">3<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"17\" font-weight=\"bold\" text-anchor=\"middle\" x=\"510.0\" y=\"120\">Ver\u00f6ffentlichen<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"500.0\" y=\"158\">Nur die ver\u00f6ffentlichte<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"500.0\" y=\"175\">Version ist ausf\u00fchrbar<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"584.0\" x2=\"614.0\" y1=\"150\" y2=\"150\"><\/line><rect fill=\"#8BC34A\" height=\"120\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"160\" x=\"620.0\" y=\"90\"><\/rect><circle cx=\"644.0\" cy=\"114\" fill=\"#29292A\" r=\"14\"><\/circle><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"14\" font-weight=\"bold\" text-anchor=\"middle\" x=\"644.0\" y=\"119\">4<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"17\" font-weight=\"bold\" text-anchor=\"middle\" x=\"710.0\" y=\"120\">Ausl\u00f6sen<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"700.0\" y=\"158\">Portal \u00b7 Zeitplan \u00b7<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"700.0\" y=\"175\">Webhook \u00b7 API \u00b7 Portal<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"784.0\" x2=\"814.0\" y1=\"150\" y2=\"150\"><\/line><rect fill=\"#F2F7EA\" height=\"120\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"160\" x=\"820.0\" y=\"90\"><\/rect><circle cx=\"844.0\" cy=\"114\" fill=\"#29292A\" r=\"14\"><\/circle><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"14\" font-weight=\"bold\" text-anchor=\"middle\" x=\"844.0\" y=\"119\">5<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"17\" font-weight=\"bold\" text-anchor=\"middle\" x=\"910.0\" y=\"120\">Job<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"900.0\" y=\"158\">Sandbox oder<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"900.0\" y=\"175\">Hybrid Worker<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"984.0\" x2=\"1014.0\" y1=\"150\" y2=\"150\"><\/line><rect fill=\"#F2F7EA\" height=\"120\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"160\" x=\"1020.0\" y=\"90\"><\/rect><circle cx=\"1044.0\" cy=\"114\" fill=\"#29292A\" r=\"14\"><\/circle><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"14\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1044.0\" y=\"119\">6<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"17\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1110.0\" y=\"120\">Ausgabe<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"1100.0\" y=\"158\">Streams: Output,<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"1100.0\" y=\"175\">Error, Verbose<\/text><path d=\"M1100.0,214 L1100.0,250 L100.0,250 L100.0,218\" fill=\"none\" marker-end=\"url(#ar)\" stroke=\"#54595F\" stroke-dasharray=\"6 4\" stroke-width=\"1.5\"><\/path><text fill=\"#54595F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"600\" y=\"268\">Entwurf \u2260 ver\u00f6ffentlicht: \u00c4nderungen wirken erst nach erneuter Ver\u00f6ffentlichung.<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"14\" font-weight=\"normal\" text-anchor=\"middle\" x=\"600\" y=\"300\">Ein ver\u00f6ffentlichtes Runbook l\u00e4sst sich auf mehreren Wegen starten. Der Ablauf bleibt gleich.<\/text><\/svg>\n<figcaption>Nur ver\u00f6ffentlichte Runbooks k\u00f6nnen gestartet werden. \u00c4nderungen bleiben bis zur erneuten Ver\u00f6ffentlichung im Entwurf.<\/figcaption>\n<\/figure>\n<p class=\"wp-block-paragraph\">So kann ein einfaches PowerShell-Runbook f\u00fcr den produktiven Einsatz aussehen. Es authentifiziert sich \u00fcber die systemseitig zugewiesene Managed Identity des Automation-Kontos und startet eine virtuelle Maschine (VM):<\/p>\n<pre class=\"wp-block-code\"><code class=\"language-powershell\" lang=\"powershell\">param (\n    [Parameter(Mandatory = $true)]\n    [string] $ResourceGroupName,\n[Parameter(Mandatory = $true)]\n    [string] $VMName\n)\n# Authentifizierung mit der Managed Identity des Automation-Kontos (kein Run As-Konto, keine Geheimnisse)\nConnect-AzAccount -Identity | Out-Null\n$vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName -Status\n$state = ($vm.Statuses | Where-Object Code -like 'PowerState\/*').DisplayStatus\nif ($state -eq 'VM running') {\n    Write-Output \"$VMName is already running.\"\n    return\n}\nStart-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName | Out-Null\nWrite-Output \"$VMName started successfully.\"<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Achte auf die Zeilen mit <code>Write-Output<\/code>: Alles, was du in den Ausgabestream schreibst, wird im Ausf\u00fchrungsverlauf des Jobs gespeichert. Diese Meldungen kann sp\u00e4ter auch ein Frontend der Person anzeigen, die den VM-Start angefordert hat. Die Managed Identity ben\u00f6tigt dazu die Rolle <em>Virtual Machine Contributor<\/em> f\u00fcr die entsprechende Ressourcengruppe. Diese Berechtigung wird einmalig vergeben \u2013 nicht f\u00fcr jedes Runbook separat.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Azure Runbook Parameters: Eingaben richtig definieren<\/h2>\n<p class=\"wp-block-paragraph\">Der <code>param<\/code>-Block legt fest, welche Eingaben dein Skript beim Start erwartet. Ob Azure-Portal, PowerShell, Webhook oder Self-Service-Portal: Alle Startmethoden orientieren sich an diesen Parametern. Eine saubere Definition spart sp\u00e4ter viel Fehlersuche \u2013 etwa wenn ein VM-Name ung\u00fcltige Zeichen enth\u00e4lt.<\/p>\n<pre class=\"wp-block-code\"><code class=\"language-powershell\" lang=\"powershell\">param (\n    [Parameter(Mandatory = $true, HelpMessage = 'Resource group that contains the VM')]\n    [ValidateNotNullOrEmpty()]\n    [string] $ResourceGroupName,\n[Parameter(Mandatory = $true, HelpMessage = 'VM name, e.g. vm-dev-web01')]\n    [ValidatePattern('^[a-zA-Z0-9-]{1,64}$')]\n    [string] $VMName,\n[Parameter(Mandatory = $false)]\n    [ValidateSet('Start', 'Stop', 'Restart')]\n    [string] $Action = 'Start',\n[Parameter(Mandatory = $false)]\n    [ValidateRange(0, 8)]\n    [int] $AutoStopAfterHours = 4\n)<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Mit <strong>Mandatory<\/strong> legst du fest, welche Felder verpflichtend sind. Das Azure-Portal ber\u00fccksichtigt au\u00dferdem Datentypen und Standardwerte. Auch ein gutes Frontend verhindert, dass erforderliche Eingaben fehlen. <strong>ValidateSet<\/strong> begrenzt m\u00f6gliche Werte auf eine festgelegte Auswahl. Im Azure-Portal bleibt die Eingabe gegebenenfalls ein Textfeld; ein Frontend kann daraus ein Dropdown machen. So entsteht beispielsweise nicht versehentlich die Eingabe \u201erestrt\u201c statt \u201eRestart\u201c.<\/p>\n<p class=\"wp-block-paragraph\"><strong>ValidatePattern<\/strong> und <strong>ValidateRange<\/strong> pr\u00fcfen Eingaben bereits bei der Parameterbindung, bevor die eigentliche Skriptlogik ausgef\u00fchrt wird. Ein Frontend kann dieselben Regeln vor dem Start des Jobs anwenden. <strong>Standardwerte<\/strong> halten Formulare \u00fcbersichtlich: Nicht jeder Benutzer muss beispielsweise selbst entscheiden, wie lange eine Entwicklungs-VM laufen soll.<\/p>\n<p class=\"wp-block-paragraph\">Eine wichtige Sicherheitsregel: <strong>\u00dcbermittle niemals Passw\u00f6rter oder andere Geheimnisse als Runbook-Parameter.<\/strong> Azure Automation protokolliert die \u00fcbergebenen Eingabewerte im Job. Lege Zugangsdaten stattdessen in verschl\u00fcsselten Automation-Variablen oder in Azure Key Vault ab und lies sie erst innerhalb des Runbooks aus.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Azure Runbook starten: 5 M\u00f6glichkeiten im \u00dcberblick<\/h2>\n<p class=\"wp-block-paragraph\">Ein ver\u00f6ffentlichtes Azure Runbook l\u00e4sst sich auf mehreren Wegen starten: direkt im Azure-Portal, zeitgesteuert, \u00fcber <code>Start-AzAutomationRunbook<\/code> beziehungsweise die Az CLI, \u00fcber die REST API oder mit einem Webhook. Jede Methode erf\u00fcllt einen anderen Zweck. F\u00fcr Endanwender, die einfach eine IT-Aufgabe anfordern m\u00f6chten, sind die ersten vier jedoch nicht unmittelbar ausgelegt.<\/p>\n<figure class=\"wp-block-image size-large\">\n<svg aria-labelledby=\"t\" role=\"img\" viewbox=\"0 0 1200 420\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><title id=\"t\">Azure Runbook starten: M\u00f6glichkeiten und Anforderungen f\u00fcr Endanwender<\/title><rect fill=\"#FFFFFF\" height=\"420\" width=\"1200\"><\/rect><defs><marker id=\"ar\" markerheight=\"10\" markerwidth=\"10\" orient=\"auto\" refx=\"9\" refy=\"5\"><path d=\"M0,0 L10,5 L0,10 z\" fill=\"#29292A\"><\/path><\/marker><\/defs><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"22\" font-weight=\"bold\" text-anchor=\"middle\" x=\"600\" y=\"40\">Azure Runbook starten: M\u00f6glichkeiten und Anforderungen f\u00fcr Endanwender<\/text><rect fill=\"#29292A\" height=\"48\" width=\"1080\" x=\"60.0\" y=\"70\"><\/rect><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"185.0\" y=\"99\">Methode<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"415.0\" y=\"99\">Wer kann es nutzen?<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"580.0\" y=\"99\">Eingabeformular<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"710.0\" y=\"99\">Benutzerrechte<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"840.0\" y=\"99\">Genehmigung<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"960.0\" y=\"99\">Audit-Protokoll<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1080.0\" y=\"99\">R\u00fcckmeldung<\/text><rect fill=\"#F7F8F6\" height=\"48\" stroke=\"#E1E4E8\" stroke-width=\"1\" width=\"1080\" x=\"60.0\" y=\"118\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"start\" x=\"72.0\" y=\"148\">Azure-Portal<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"start\" x=\"322.0\" y=\"148\">Nur Administratoren<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"580.0\" y=\"149\">\u2713<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"710.0\" y=\"149\">\u2717<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"840.0\" y=\"149\">\u2717<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"960.0\" y=\"149\">\u2713<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1080.0\" y=\"149\">\u2713<\/text><rect fill=\"#FFFFFF\" height=\"48\" stroke=\"#E1E4E8\" stroke-width=\"1\" width=\"1080\" x=\"60.0\" y=\"166\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"start\" x=\"72.0\" y=\"196\">Zeitplan<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"start\" x=\"322.0\" y=\"196\">Niemand (zeitgesteuert)<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"580.0\" y=\"197\">\u2717<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"710.0\" y=\"197\">\u2717<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"840.0\" y=\"197\">\u2717<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"960.0\" y=\"197\">\u2713<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1080.0\" y=\"197\">\u2717<\/text><rect fill=\"#F7F8F6\" height=\"48\" stroke=\"#E1E4E8\" stroke-width=\"1\" width=\"1080\" x=\"60.0\" y=\"214\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"start\" x=\"72.0\" y=\"244\">PowerShell \/ Az CLI<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"start\" x=\"322.0\" y=\"244\">Admins mit Az-Modul<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"580.0\" y=\"245\">\u2717<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"710.0\" y=\"245\">\u2717<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"840.0\" y=\"245\">\u2717<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"960.0\" y=\"245\">\u2713<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1080.0\" y=\"245\">\u2713<\/text><rect fill=\"#FFFFFF\" height=\"48\" stroke=\"#E1E4E8\" stroke-width=\"1\" width=\"1080\" x=\"60.0\" y=\"262\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"start\" x=\"72.0\" y=\"292\">Webhook<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"start\" x=\"322.0\" y=\"292\">Jeder mit der URL<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"580.0\" y=\"293\">\u2717<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"710.0\" y=\"293\">\u2717<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"840.0\" y=\"293\">\u2717<\/text><text fill=\"#B7791F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"960.0\" y=\"293\">\u25d0<\/text><text fill=\"#D9534F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1080.0\" y=\"293\">\u2717<\/text><rect fill=\"#F2F7EA\" height=\"48\" stroke=\"#8BC34A\" stroke-width=\"2\" width=\"1080\" x=\"60.0\" y=\"310\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"start\" x=\"72.0\" y=\"340\">Self-Service-Portal (au2mator)<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"start\" x=\"322.0\" y=\"340\">Endanwender &amp; Helpdesk<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"580.0\" y=\"341\">\u2713<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"710.0\" y=\"341\">\u2713<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"840.0\" y=\"341\">\u2713<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"960.0\" y=\"341\">\u2713<\/text><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"20\" font-weight=\"bold\" text-anchor=\"middle\" x=\"1080.0\" y=\"341\">\u2713<\/text><text fill=\"#54595F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"600\" y=\"392\">\u2713 ja   \u25d0 teilweise (Parameter werden protokolliert, Aufrufer nicht)   \u2717 nein<\/text><\/svg>\n<figcaption>Alle Methoden starten dasselbe Runbook. Unterschiede bestehen bei Zugriff, Berechtigungen und den Abl\u00e4ufen rund um den Job.<\/figcaption>\n<\/figure>\n<p class=\"wp-block-paragraph\">Das <strong>Azure-Portal<\/strong> eignet sich f\u00fcr Administratoren. Daf\u00fcr sind eine Azure-Anmeldung und mindestens die Rolle <em>Automation Operator<\/em> n\u00f6tig \u2013 Berechtigungen, die ein Helpdesk nicht pauschal erhalten sollte. Ein <strong>Zeitplan<\/strong> ist ideal, um beispielsweise alle Entwicklungs-VMs um 19 Uhr herunterzufahren, aber ungeeignet f\u00fcr spontane Anforderungen. <strong>PowerShell und die Az CLI<\/strong> sind praktisch f\u00fcr Skripte und Pipelines, setzen aber die entsprechenden Werkzeuge und Berechtigungen voraus. Die <strong>REST API<\/strong> bildet die Grundlage f\u00fcr viele Integrationen und erfordert ein Entra-ID-Token sowie passende RBAC-Berechtigungen f\u00fcr das Automation-Konto.<\/p>\n<p class=\"wp-block-paragraph\">Bleibt der <strong>Webhook<\/strong>: Ein einziger HTTPS-POST-Aufruf kann das Runbook starten. Damit kommt Azure einer einfachen Schaltfl\u00e4che f\u00fcr die Ausf\u00fchrung am n\u00e4chsten. Deshalb lohnt sich ein genauerer Blick.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Azure Automation Webhook: Runbook per HTTP starten<\/h2>\n<p class=\"wp-block-paragraph\">Ein <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/automation\/automation-webhooks\">Azure Automation Webhook<\/a> ist eine eindeutige URL, die mit einem bestimmten Runbook verkn\u00fcpft ist. Wer einen HTTP-POST-Request an diese URL sendet, kann das Runbook starten \u2013 ohne Anmeldung im Azure-Portal oder zus\u00e4tzliches SDK. Das eignet sich beispielsweise f\u00fcr Azure DevOps, CI\/CD-Pipelines, Monitoring-Tools und eigene Portale.<\/p>\n<p class=\"wp-block-paragraph\">Dabei gibt es eine Besonderheit: Das Runbook erh\u00e4lt die Anfrage \u00fcber einen einzigen Parameter mit dem Namen <code>WebhookData<\/code>. Individuelle Runbook-Parameter werden nicht automatisch aus dem Request-Body bef\u00fcllt. Du musst die \u00fcbermittelten Daten selbst auslesen:<\/p>\n<pre class=\"wp-block-code\"><code class=\"language-powershell\" lang=\"powershell\">param (\n    [Parameter(Mandatory = $false)]\n    [object] $WebhookData\n)\nif (-not $WebhookData) {\n    throw 'This runbook expects to be started from a webhook.'\n}\n# Optional: Aufrufe von anderen als dem erwarteten Webhook ablehnen\nif ($WebhookData.WebhookName -ne 'wh-start-vm-helpdesk') {\n    throw \"Unexpected webhook: $($WebhookData.WebhookName)\"\n}\n$body = $WebhookData.RequestBody | ConvertFrom-Json\nConnect-AzAccount -Identity | Out-Null\nStart-AzVM -ResourceGroupName $body.ResourceGroupName -Name $body.VMName | Out-Null\nWrite-Output \"$($body.VMName) started via webhook.\"<\/code><\/pre>\n<p class=\"wp-block-paragraph\">So rufst du den Webhook \u00fcber PowerShell auf:<\/p>\n<pre class=\"wp-block-code\"><code class=\"language-powershell\" lang=\"powershell\">$uri  = 'https:\/\/&lt;id&gt;.webhook.&lt;region&gt;.azure-automation.net\/webhooks?token=...'\n$body = @{ ResourceGroupName = 'rg-dev'; VMName = 'vm-dev-web01' } | ConvertTo-Json\nInvoke-RestMethod -Method Post -Uri $uri -Body $body -ContentType 'application\/json'\n# Gibt eine JobId zur\u00fcck. Das Runbook selbst wird asynchron ausgef\u00fchrt<\/code><\/pre>\n<h3 class=\"wp-block-heading\">Azure Automation Webhook: Sicherheit und Risiken<\/h3>\n<p class=\"wp-block-paragraph\">Bevor du eine Webhook-URL weitergibst, solltest du diese Punkte kennen:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Die URL ist das Passwort.<\/strong> Azure pr\u00fcft bei Webhook-Aufrufen keine zus\u00e4tzliche Authentifizierung. Wer die URL kennt, kann das Runbook mit beliebigen Daten starten.<\/li>\n<li><strong>Die URL wird nur einmal angezeigt<\/strong> \u2013 direkt bei der Erstellung. Geht sie verloren, musst du einen neuen Webhook anlegen.<\/li>\n<li><strong>Webhooks laufen ab<\/strong>, standardm\u00e4\u00dfig nach einem Jahr. Plane deshalb rechtzeitig eine Rotation ein.<\/li>\n<li><strong>Die \u00fcbermittelten Daten werden protokolliert.<\/strong> Der Request-Body wird im Job gespeichert und kann von Personen mit Zugriff auf den Ausf\u00fchrungsverlauf eingesehen werden.<\/li>\n<li><strong>Keine Benutzeridentit\u00e4t.<\/strong> Azure Automation erfasst den Start durch den Webhook, nicht die Identit\u00e4t der Person, die ihn aufgerufen hat.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Microsoft empfiehlt f\u00fcr sensible Aktionen eine zus\u00e4tzliche Validierungs- und Sicherheitsschicht vor dem Webhook. Genau diese Aufgabe muss ein geeignetes Frontend \u00fcbernehmen.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Warum ein Azure Automation Webhook allein kein Frontend ersetzt<\/h2>\n<p class=\"wp-block-paragraph\">Ein Webhook l\u00f6st einen Vorgang aus \u2013 mehr nicht. Anwender ben\u00f6tigen aber eine vollst\u00e4ndige Benutzeroberfl\u00e4che. Wenn du etwa einen Teams-Button oder ein SharePoint-Formular direkt mit einem Webhook verbindest, fehlen typischerweise mindestens sechs Funktionen:<\/p>\n<ol class=\"wp-block-list\">\n<li><strong>Ein Formular passend zu den Parametern.<\/strong> Dropdowns f\u00fcr <code>ValidateSet<\/code>, Pflichtfelder, sinnvolle Standardwerte und verst\u00e4ndliche Beschriftungen in der Sprache der Benutzer.<\/li>\n<li><strong>Authentifizierung und Berechtigungen.<\/strong> Wer darf welches Runbook mit welchen Parametern starten? Der Helpdesk darf beispielsweise <em>vm-dev-*<\/em> neu starten, aber keinen Dom\u00e4nencontroller.<\/li>\n<li><strong>Genehmigungen.<\/strong> Bevor eine neue VM Kosten verursacht, sollte etwa die Teamleitung zustimmen.<\/li>\n<li><strong>Eingabepr\u00fcfung vor dem Jobstart.<\/strong> Ung\u00fcltige Werte werden direkt im Formular zur\u00fcckgewiesen, statt sp\u00e4ter einen fehlgeschlagenen Job zu verursachen.<\/li>\n<li><strong>Nachvollziehbares Audit-Log.<\/strong> Wer hat wann was aus welchem Grund angefordert und wer hat es genehmigt? Der Webhook-Ausf\u00fchrungsverlauf allein liefert diese Informationen nicht.<\/li>\n<li><strong>R\u00fcckmeldung an die anfragende Person.<\/strong> Die Ausgabe des Runbooks \u2013 etwa \u201evm-dev-web01 started successfully\u201c \u2013 sollte beim Benutzer ankommen und nicht nur im Jobprotokoll stehen.<\/li>\n<\/ol>\n<p class=\"wp-block-paragraph\">Diese sechs Funktionen kannst du selbst entwickeln \u2013 etwa mit App-Registrierung, Webanwendung, Datenbank, Rollenverwaltung, Genehmigungsworkflow und Abfrage des Jobstatus. Das ist machbar. Allerdings betreiben viele Teams anschlie\u00dfend dauerhaft eine eigene Anwendung, statt sich auf die eigentliche IT-Automatisierung zu konzentrieren. Eine Alternative ist ein Self-Service-Portal, das diese Funktionen bereits mitbringt.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Vom Azure Runbook zum Self-Service-Portal in 3 Schritten<\/h2>\n<p class=\"wp-block-paragraph\">So setzen wir <a href=\"https:\/\/au2mator.com\/de\/azure-automation\/\">au2mator als Frontend f\u00fcr Azure Automation<\/a> ein. Das Azure Automation Runbook selbst bleibt unver\u00e4ndert. Hinzu kommen die Funktionen f\u00fcr sichere und komfortable Self-Service-Prozesse:<\/p>\n<figure class=\"wp-block-image size-large\">\n<svg aria-labelledby=\"t\" role=\"img\" viewbox=\"0 0 1300 470\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><title id=\"t\">Vom Runbook zum Web-Frontend: Self-Service-Architektur<\/title><rect fill=\"#FFFFFF\" height=\"470\" width=\"1300\"><\/rect><defs><marker id=\"ar\" markerheight=\"10\" markerwidth=\"10\" orient=\"auto\" refx=\"9\" refy=\"5\"><path d=\"M0,0 L10,5 L0,10 z\" fill=\"#29292A\"><\/path><\/marker><\/defs><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"22\" font-weight=\"bold\" text-anchor=\"middle\" x=\"600\" y=\"40\">Vom Runbook zum Web-Frontend: Self-Service-Architektur<\/text><rect fill=\"#F2F7EA\" height=\"96\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"140\" x=\"30\" y=\"170\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"100.0\" y=\"208\">Endanwender \/<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"100.0\" y=\"225\">Helpdesk<\/text><rect fill=\"#F2F7EA\" height=\"96\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"175\" x=\"240\" y=\"170\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"327.5\" y=\"208\">Self-Service-Formular<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"327.5\" y=\"225\">(Runbook-Parameter<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"327.5\" y=\"242\">als Fragen)<\/text><rect fill=\"#F2F7EA\" height=\"96\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"150\" x=\"485\" y=\"170\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"560.0\" y=\"208\">Genehmigung<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"560.0\" y=\"225\">(optional, z. B.<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"560.0\" y=\"242\">Teamleitung)<\/text><rect fill=\"#8BC34A\" height=\"96\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"150\" x=\"705\" y=\"170\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"780.0\" y=\"208\">Portalkern<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"780.0\" y=\"225\">Auth. \u00b7 Rollen \u00b7<\/text><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"780.0\" y=\"242\">Audit-Log<\/text><rect fill=\"#29292A\" height=\"96\" rx=\"12\" stroke=\"#29292A\" stroke-width=\"1.5\" width=\"195\" x=\"930\" y=\"170\"><\/rect><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"1027.5\" y=\"208\">Azure Automation<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"1027.5\" y=\"225\">Runbook-Job<\/text><text fill=\"#FFFFFF\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"normal\" text-anchor=\"middle\" x=\"1027.5\" y=\"242\">Managed Identity<\/text><rect fill=\"none\" height=\"168\" rx=\"16\" stroke=\"#8BC34A\" stroke-dasharray=\"8 5\" stroke-width=\"1.5\" width=\"643\" x=\"226\" y=\"130\"><\/rect><text fill=\"#8BC34A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"13\" font-weight=\"bold\" text-anchor=\"middle\" x=\"547\" y=\"148\">au2mator Self-Service Portal<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"170\" x2=\"236\" y1=\"218.0\" y2=\"218.0\"><\/line><text fill=\"#54595F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"11\" font-weight=\"normal\" text-anchor=\"middle\" x=\"205.0\" y=\"204.0\">sendet<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"415\" x2=\"481\" y1=\"218.0\" y2=\"218.0\"><\/line><text fill=\"#54595F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"11\" font-weight=\"normal\" text-anchor=\"middle\" x=\"450.0\" y=\"204.0\">genehmigt<\/text><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"635\" x2=\"701\" y1=\"218.0\" y2=\"218.0\"><\/line><line marker-end=\"url(#ar)\" stroke=\"#29292A\" stroke-width=\"2\" x1=\"855\" x2=\"926\" y1=\"218.0\" y2=\"218.0\"><\/line><text fill=\"#54595F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"11\" font-weight=\"normal\" text-anchor=\"middle\" x=\"892.5\" y=\"204.0\">startet<\/text><text fill=\"#54595F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"11\" font-weight=\"normal\" text-anchor=\"middle\" x=\"892\" y=\"240.0\">per API<\/text><rect fill=\"#FFFFFF\" height=\"54\" rx=\"10\" stroke=\"#54595F\" stroke-width=\"1.5\" width=\"165\" x=\"764.5\" y=\"360\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"847.0\" y=\"392\">Entra ID \/ M365<\/text><line marker-end=\"url(#ar)\" stroke=\"#54595F\" stroke-width=\"1.5\" x1=\"1027\" x2=\"847.0\" y1=\"268\" y2=\"357\"><\/line><rect fill=\"#FFFFFF\" height=\"54\" rx=\"10\" stroke=\"#54595F\" stroke-width=\"1.5\" width=\"165\" x=\"944.5\" y=\"360\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"1027.0\" y=\"392\">Azure-Ressourcen<\/text><line marker-end=\"url(#ar)\" stroke=\"#54595F\" stroke-width=\"1.5\" x1=\"1027\" x2=\"1027.0\" y1=\"268\" y2=\"357\"><\/line><rect fill=\"#FFFFFF\" height=\"54\" rx=\"10\" stroke=\"#54595F\" stroke-width=\"1.5\" width=\"165\" x=\"1124.5\" y=\"360\"><\/rect><text fill=\"#29292A\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"1207.0\" y=\"392\">Lokal (Hybrid Worker)<\/text><line marker-end=\"url(#ar)\" stroke=\"#54595F\" stroke-width=\"1.5\" x1=\"1027\" x2=\"1207.0\" y1=\"268\" y2=\"357\"><\/line><text fill=\"#54595F\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"11\" font-weight=\"normal\" text-anchor=\"start\" x=\"1087\" y=\"288\">arbeitet mit<\/text><path d=\"M1027,168 L1027,90 L100,90 L100,166\" fill=\"none\" marker-end=\"url(#ar)\" stroke=\"#61CE70\" stroke-dasharray=\"6 4\" stroke-width=\"2\"><\/path><text fill=\"#61CE70\" font-family=\"Montserrat, Segoe UI, Arial, sans-serif\" font-size=\"12\" font-weight=\"normal\" text-anchor=\"middle\" x=\"560\" y=\"82\">Jobstatus und Ausgabe zur\u00fcck an die anfragende Person<\/text><\/svg>\n<figcaption>Das Portal \u00fcbernimmt Identit\u00e4t, Formulare, Genehmigungen und Protokollierung. Azure Automation f\u00fchrt die Jobs aus.<\/figcaption>\n<\/figure>\n<p class=\"wp-block-paragraph\"><strong>Schritt 1: Automation-Konto verbinden.<\/strong> au2mator authentifiziert sich gegen\u00fcber deinem Azure Automation-Konto und liest die ver\u00f6ffentlichten Runbooks sowie deren Parameterdefinitionen aus. Du musst keine Webhook-URLs verteilen und keine gemeinsamen Zugangsdaten in Chats speichern.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Schritt 2: Service einrichten.<\/strong> Jeder Runbook-Parameter wird zu einer Frage in einem Formular. Du bestimmst, wer den Service \u00fcber Entra-ID-Gruppen sehen darf, ob eine Genehmigung erforderlich ist und welche Werte Benutzer ausw\u00e4hlen k\u00f6nnen. Aus <code>ValidateSet<\/code> wird beispielsweise eine Auswahlliste. Ein Ressourcengruppen-Parameter l\u00e4sst sich vorbelegen oder vollst\u00e4ndig ausblenden, sodass der Benutzer nur noch eine VM ausw\u00e4hlen muss.<\/p>\n<p class=\"wp-block-paragraph\"><strong>Schritt 3: Service f\u00fcr Benutzer bereitstellen.<\/strong> Helpdesk-Mitarbeiter oder Endanwender \u00f6ffnen das Portal, f\u00fcllen das Formular aus und senden ihre Anfrage ab. Falls eine Genehmigung vorgesehen ist, kann die zust\u00e4ndige Person diese mit einem Klick erteilen oder ablehnen. au2mator startet den Runbook-Job, verfolgt dessen Status und zeigt die Ausgabe an. Jede Anfrage wird nachvollziehbar dokumentiert: Wer hat was, wann, wo und warum angefordert?<\/p>\n<p class=\"wp-block-paragraph\">Silhouette International nutzt dieses Prinzip f\u00fcr rund 80.000 Benutzer. Standortadministratoren weltweit starten damit mehr als 100-mal t\u00e4glich Services wie \u201eNeuen Benutzer anlegen\u201c oder \u201eBenutzer zu Gruppe hinzuf\u00fcgen\u201c, ohne selbst Zugriff auf Active Directory zu ben\u00f6tigen. Die Runbooks erledigen die technische Arbeit. Das Portal steuert, wer sie anfordern darf.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Praxisbeispiel: Entwicklungs-VM per Azure Runbook starten<\/h2>\n<p class=\"wp-block-paragraph\">Sehen wir uns an, wie sich das oben gezeigte Runbook in einen sicheren Self-Service f\u00fcr den <a href=\"https:\/\/au2mator.com\/de\/helpdesk\/\">First-Level-Helpdesk<\/a> verwandeln l\u00e4sst.<\/p>\n<p class=\"wp-block-paragraph\">Das <strong>Runbook<\/strong> hei\u00dft <code>Start-DevVM<\/code> und nutzt die Parameter <code>ResourceGroupName<\/code>, <code>VMName<\/code> und <code>Action<\/code> (mit <code>ValidateSet<\/code> f\u00fcr Start\/Stop\/Restart). Die Managed Identity besitzt die Rolle <em>Virtual Machine Contributor<\/em> ausschlie\u00dflich f\u00fcr <code>rg-dev<\/code>.<\/p>\n<p class=\"wp-block-paragraph\">Im <strong>Portal<\/strong> bleibt <code>ResourceGroupName<\/code> verborgen und ist fest auf <code>rg-dev<\/code> eingestellt. F\u00fcr <code>VMName<\/code> steht ein Dropdown zur Verf\u00fcgung, das ein separates Lookup-Runbook mit den VMs dieser Ressourcengruppe bef\u00fcllt. Unter <code>Action<\/code> sind die drei Aktionen ausw\u00e4hlbar. Der Service ist nur f\u00fcr die Entra-ID-Gruppe <em>Helpdesk-L1<\/em> sichtbar. Start und Stop ben\u00f6tigen keine <strong>Genehmigung<\/strong>; f\u00fcr einen Neustart muss zun\u00e4chst der VM-Verantwortliche zustimmen, da m\u00f6glicherweise jemand an der VM arbeitet.<\/p>\n<p class=\"wp-block-paragraph\">Nach erfolgreicher Ausf\u00fchrung sieht die anfragende Person die Meldung \u201evm-dev-web01 started successfully\u201c im Portal und erh\u00e4lt sie per E-Mail. Tritt ein Fehler auf, wird der Fehlerstream an die Anfrage angeh\u00e4ngt und die IT benachrichtigt.<\/p>\n<p class=\"wp-block-paragraph\">Der Helpdesk muss weder das Azure-Portal \u00f6ffnen noch Webhook-URLs verwalten. Au\u00dferdem kann er ausschlie\u00dflich VMs in <code>rg-dev<\/code> bedienen. Wieder ein wiederkehrendes Ticket weniger.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Best Practices f\u00fcr Azure Automation Runbooks im Produktivbetrieb<\/h2>\n<p class=\"wp-block-paragraph\">Ein Skript, das nur gelegentlich im eigenen Konto l\u00e4uft, stellt andere Anforderungen als ein Runbook, das hundertmal t\u00e4glich von anderen Personen gestartet wird. Vor der Bereitstellung als Service pr\u00fcfen wir deshalb folgende Punkte:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Managed Identity und minimale Berechtigungen.<\/strong> Weise Rollen nur im tats\u00e4chlich ben\u00f6tigten Ressourcenumfang zu. Nicht aus Bequemlichkeit die Rolle <em>Contributor<\/em> f\u00fcr das gesamte Abonnement vergeben.<\/li>\n<li><strong>Runtime Environment festlegen.<\/strong> Nutze PowerShell 7.4 (oder 7.6) mit definierten Modulversionen. Automatische Updates auf die neueste Version k\u00f6nnen bestehende Services unerwartet beeintr\u00e4chtigen.<\/li>\n<li><strong>Idempotente Abl\u00e4ufe.<\/strong> Benutzer klicken manchmal zweimal. \u201eZur Gruppe hinzuf\u00fcgen\u201c sollte deshalb auch dann erfolgreich sein, wenn die Person bereits Mitglied ist.<\/li>\n<li><strong>Verst\u00e4ndliche Ausgaben.<\/strong> Gib mit <code>Write-Output<\/code> eine klare Erfolgsmeldung und mit <code>Write-Error<\/code> aussagekr\u00e4ftige Fehlerinformationen aus. Diese Texte sehen sp\u00e4ter die Anfragenden.<\/li>\n<li><strong>Dreist\u00fcndiges Fair-Share-Limit beachten.<\/strong> <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/automation\/automation-runbook-execution\">Jobs in der Cloud-Sandbox<\/a> werden nach drei Stunden beendet. L\u00e4ngere oder lokale Aufgaben geh\u00f6ren auf einen <strong>Hybrid Runbook Worker<\/strong>.<\/li>\n<li><strong>Keine Geheimnisse in Parametern oder Ausgaben.<\/strong> Beide k\u00f6nnen protokolliert werden. Nutze verschl\u00fcsselte Automation-Variablen oder Key Vault.<\/li>\n<li><strong>Child Runbooks f\u00fcr gemeinsame Logik.<\/strong> Ein Lookup-Runbook wie <code>Get-AuthorizedVMs<\/code> kann von zehn Services wiederverwendet werden, statt die gleiche Logik zehnmal zu kopieren.<\/li>\n<li><strong>Versionsverwaltung.<\/strong> Entwickle in VS Code mit der Azure-Automation-Erweiterung, sichere \u00c4nderungen in Git und ver\u00f6ffentliche \u00fcber eine Pipeline. Der Portal-Editor eignet sich eher f\u00fcr schnelle Korrekturen.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Weitere typische Fehler \u2013 von abgelaufenen Webhooks bis hin zu \u00fcberm\u00e4\u00dfig weitreichenden Berechtigungen \u2013 findest du in unserem kostenlosen PDF <a href=\"https:\/\/au2mator.com\/de\/azure-automation-tipps\/\">8 Ways to Screw Your Azure Automation<\/a>.<\/p>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">FAQ: H\u00e4ufige Fragen zu Azure Automation Runbooks<\/h2>\n<div class=\"schema-faq wp-block-yoast-faq-block\">\n<div class=\"schema-faq-section\" id=\"faq-question-en-1\">\n<strong class=\"schema-faq-question\">Was unterscheidet ein Azure Runbook von einem normalen PowerShell-Skript?<\/strong> <p class=\"schema-faq-answer\">Der eigentliche Code kann identisch sein. Ein Runbook liegt jedoch in einem Azure Automation-Konto. Dieses bietet unter anderem Managed-Identity-Authentifizierung, Zeitplanung, Ausf\u00fchrungsverlauf sowie die Ausf\u00fchrung in einer Sandbox oder auf einem Hybrid Worker. Au\u00dferdem gibt es standardisierte Startm\u00f6glichkeiten \u00fcber Portal, Webhook oder API. Ein lokal ausgef\u00fchrtes Skript bringt diese Infrastruktur nicht automatisch mit.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-en-2\">\n<strong class=\"schema-faq-question\">K\u00f6nnen Endanwender ein Azure Automation Runbook ohne Zugriff auf das Azure-Portal starten?<\/strong> <p class=\"schema-faq-answer\">Ja, \u00fcber eine vorgeschaltete L\u00f6sung. Das Azure-Portal, PowerShell und die REST API ben\u00f6tigen entsprechende Identit\u00e4ten und Berechtigungen f\u00fcr das Automation-Konto. Ein Webhook l\u00e4sst sich ohne Azure-Anmeldung aufrufen, pr\u00fcft daf\u00fcr aber nicht die Identit\u00e4t des Aufrufers. F\u00fcr einen kontrollierten Self-Service brauchst du ein Frontend, das Benutzer authentifiziert, zul\u00e4ssige Aktionen festlegt und Jobs in ihrem Auftrag startet.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-en-3\">\n<strong class=\"schema-faq-question\">Wie \u00fcbergebe ich Azure Runbook Parameters \u00fcber einen Webhook?<\/strong> <p class=\"schema-faq-answer\">\u00dcbermittle die Werte als JSON im Body des POST-Requests. Im Runbook definierst du den Parameter <code>[object] $WebhookData<\/code>, liest <code>$WebhookData.RequestBody<\/code> und wandelst ihn mit <code>ConvertFrom-Json<\/code> um. Normale Runbook-Parameter werden nicht automatisch mit Werten aus dem Request-Body bef\u00fcllt; feste Parameterwerte k\u00f6nnen bei der Erstellung des Webhooks gesetzt werden.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-en-4\">\n<strong class=\"schema-faq-question\">Wie sicher sind Azure Automation Webhooks?<\/strong> <p class=\"schema-faq-answer\">Die Sicherheit h\u00e4ngt wesentlich von der geheim gehaltenen Webhook-URL ab. Azure f\u00fchrt beim Webhook-Aufruf keine eigene Benutzer-Authentifizierung durch. Standardm\u00e4\u00dfig laufen Webhooks nach einem Jahr ab; au\u00dferdem wird der Request-Body im Job protokolliert. F\u00fcr sensible Aktionen empfiehlt sich daher eine zus\u00e4tzliche Sicherheits- und Validierungsschicht.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-en-5\">\n<strong class=\"schema-faq-question\">Welche PowerShell-Version eignet sich 2026 f\u00fcr neue Azure Runbooks?<\/strong> <p class=\"schema-faq-answer\">Im Beitrag werden PowerShell 7.4 oder 7.6 in einer festgelegten Runtime Environment empfohlen. PowerShell 7.1 und 7.2 sind abgek\u00fcndigt. PowerShell 5.1 kann f\u00fcr \u00e4ltere Workflow-Runbooks mit Checkpoints weiter erforderlich sein.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-en-6\">\n<strong class=\"schema-faq-question\">Funktionieren Runbooks auch mit lokalem Active Directory und eigenen Servern?<\/strong> <p class=\"schema-faq-answer\">Ja. Daf\u00fcr installierst du einen Hybrid Runbook Worker auf einem System in deinem Netzwerk. Das Runbook wird in Azure verwaltet und gestartet, aber auf dem Worker ausgef\u00fchrt. So kann es beispielsweise auf Active Directory, Dateiserver und interne Systeme zugreifen. F\u00fcr Hybrid Worker gilt zudem nicht das dreist\u00fcndige Fair-Share-Limit der Cloud-Sandbox.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-en-7\">\n<strong class=\"schema-faq-question\">Startet au2mator Runbooks \u00fcber Webhooks oder die API?<\/strong> <p class=\"schema-faq-answer\">au2mator verbindet sich direkt mit dem Azure Automation-Konto und startet Jobs \u00fcber die Azure Automation API mit einer eigenen Identit\u00e4t. Danach werden Jobstatus und Ausgaben verfolgt. Webhook-URLs sind nicht erforderlich; die Vorg\u00e4nge lassen sich im Audit-Log des Portals den anfragenden Personen zuordnen.<\/p> <\/div> <\/div>\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:40px;margin-bottom:40px;background-color:#8bc34a;color:#8bc34a\"\/>\n<h2 class=\"wp-block-heading\">Fazit: Das Runbook ist nur der Anfang<\/h2>\n<p class=\"wp-block-paragraph\">Ein Azure Automation Runbook zu schreiben, ist oft in wenigen Stunden erledigt. Die eigentliche Herausforderung besteht darin, festzulegen, wer es mit welchen Parametern starten darf, welche Genehmigungen notwendig sind und wie Benutzer R\u00fcckmeldungen erhalten. Erst dadurch wird aus einem Skript ein sicher nutzbarer Service. Ein Webhook liefert lediglich den Ausl\u00f6ser. Ein Self-Service-Portal kann dagegen viele manuelle Helpdesk-Tickets \u00fcberfl\u00fcssig machen.<\/p>\n<p class=\"wp-block-paragraph\">Du m\u00f6chtest sehen, wie sich deine bestehenden Runbooks als Self-Service anbieten lassen? Dann vereinbare einen 30-min\u00fctigen Termin mit Michael Seidl, Microsoft MVP und Gr\u00fcnder von au2mator. Bring ein Runbook mit \u2013 gemeinsam richten wir daf\u00fcr ein Formular ein.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p><b>Dein Azure Automation Runbook funktioniert. Jetzt mach es f\u00fcr die richtigen Personen zug\u00e4nglich.<\/b><\/p>\n<p>Lerne die Grundlagen von Azure Automation Runbooks kennen \u2013 von den verschiedenen Runbook-Typen \u00fcber den Lebenszyklus und die Parameter bis hin zu den unterschiedlichen M\u00f6glichkeiten, ein Runbook auszuf\u00fchren.<\/p>\n<p>Erfahre anschlie\u00dfend, wie du Helpdesk-Teams und Endnutzern einen sicheren Zugriff erm\u00f6glichst, ohne ihnen Berechtigungen f\u00fcr das Azure-Portal erteilen oder sensible Webhook-URLs offenlegen zu m\u00fcssen. Verwandle wiederkehrende Supportanfragen in sichere Self-Service-Automatisierungen und reduziere den manuellen Aufwand f\u00fcr dein IT-Team.<\/p>\n","protected":false},"author":3,"featured_media":2647,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[16],"tags":[],"class_list":["post-2646","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Azure Automation Runbook: Anleitung &amp; Best Practices<\/title>\n<meta name=\"description\" content=\"Azure Automation Runbooks einfach erkl\u00e4rt: Erstellen, ausf\u00fchren und automatisieren. Alles zu Parametern, Webhooks und Best Practices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Automation Runbook: Anleitung &amp; Best Practices\" \/>\n<meta property=\"og:description\" content=\"Azure Automation Runbooks einfach erkl\u00e4rt: Erstellen, ausf\u00fchren und automatisieren. Alles zu Parametern, Webhooks und Best Practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/\" \/>\n<meta property=\"og:site_name\" content=\"au2mator\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-26T07:01:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T12:59:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/09\/azure-automation-runbook-cover.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1355\" \/>\n\t<meta property=\"og:image:height\" content=\"877\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Michael Seidl\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Seidl\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/\"},\"author\":{\"name\":\"Michael Seidl\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#\\\/schema\\\/person\\\/64bb27dd52011f02a51c74811b8981f3\"},\"headline\":\"Azure Automation Runbook\",\"datePublished\":\"2026-09-26T07:01:55+00:00\",\"dateModified\":\"2026-10-23T12:59:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/\"},\"wordCount\":2622,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/au2mator.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/azure-automation-runbook-cover.png\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/\",\"url\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/\",\"name\":\"Azure Automation Runbook: Anleitung & Best Practices\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/au2mator.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/azure-automation-runbook-cover.png\",\"datePublished\":\"2026-09-26T07:01:55+00:00\",\"dateModified\":\"2026-10-23T12:59:50+00:00\",\"description\":\"Azure Automation Runbooks einfach erkl\u00e4rt: Erstellen, ausf\u00fchren und automatisieren. Alles zu Parametern, Webhooks und Best Practices.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#primaryimage\",\"url\":\"https:\\\/\\\/au2mator.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/azure-automation-runbook-cover.png\",\"contentUrl\":\"https:\\\/\\\/au2mator.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/azure-automation-runbook-cover.png\",\"width\":1355,\"height\":877,\"caption\":\"Azure Automation runbook turned into a self-service web form with the au2mator portal\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/azure-automation-runbook\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/au2mator.com\\\/de\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Automation Runbook\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/au2mator.com\\\/de\\\/\",\"name\":\"au2mator\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/au2mator.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#organization\",\"name\":\"au2mator\",\"url\":\"https:\\\/\\\/au2mator.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/au2mator.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/HPLogoau2mator-2.png\",\"contentUrl\":\"https:\\\/\\\/au2mator.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/HPLogoau2mator-2.png\",\"width\":396,\"height\":86,\"caption\":\"au2mator\"},\"image\":{\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCUdkfOxKtCj0_21WjRv5q-w\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/au2mator\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/au2mator.com\\\/de\\\/#\\\/schema\\\/person\\\/64bb27dd52011f02a51c74811b8981f3\",\"name\":\"Michael Seidl\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7bce6d4773dd6e107176aa71ea37cceab7e2f576f2fd6c7606893b0d3206d2e6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7bce6d4773dd6e107176aa71ea37cceab7e2f576f2fd6c7606893b0d3206d2e6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7bce6d4773dd6e107176aa71ea37cceab7e2f576f2fd6c7606893b0d3206d2e6?s=96&d=mm&r=g\",\"caption\":\"Michael Seidl\"},\"sameAs\":[\"https:\\\/\\\/au2mator.com\"],\"url\":\"https:\\\/\\\/au2mator.com\\\/de\\\/blog\\\/author\\\/michael-seidl\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Automation Runbook: Anleitung & Best Practices","description":"Azure Automation Runbooks einfach erkl\u00e4rt: Erstellen, ausf\u00fchren und automatisieren. Alles zu Parametern, Webhooks und Best Practices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/","og_locale":"de_DE","og_type":"article","og_title":"Azure Automation Runbook: Anleitung & Best Practices","og_description":"Azure Automation Runbooks einfach erkl\u00e4rt: Erstellen, ausf\u00fchren und automatisieren. Alles zu Parametern, Webhooks und Best Practices.","og_url":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/","og_site_name":"au2mator","article_published_time":"2026-09-26T07:01:55+00:00","article_modified_time":"2026-10-23T12:59:50+00:00","og_image":[{"width":1355,"height":877,"url":"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/09\/azure-automation-runbook-cover.png","type":"image\/png"}],"author":"Michael Seidl","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Michael Seidl","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#article","isPartOf":{"@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/"},"author":{"name":"Michael Seidl","@id":"https:\/\/au2mator.com\/de\/#\/schema\/person\/64bb27dd52011f02a51c74811b8981f3"},"headline":"Azure Automation Runbook","datePublished":"2026-09-26T07:01:55+00:00","dateModified":"2026-10-23T12:59:50+00:00","mainEntityOfPage":{"@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/"},"wordCount":2622,"commentCount":0,"publisher":{"@id":"https:\/\/au2mator.com\/de\/#organization"},"image":{"@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#primaryimage"},"thumbnailUrl":"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/09\/azure-automation-runbook-cover.png","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/","url":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/","name":"Azure Automation Runbook: Anleitung & Best Practices","isPartOf":{"@id":"https:\/\/au2mator.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#primaryimage"},"image":{"@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#primaryimage"},"thumbnailUrl":"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/09\/azure-automation-runbook-cover.png","datePublished":"2026-09-26T07:01:55+00:00","dateModified":"2026-10-23T12:59:50+00:00","description":"Azure Automation Runbooks einfach erkl\u00e4rt: Erstellen, ausf\u00fchren und automatisieren. Alles zu Parametern, Webhooks und Best Practices.","breadcrumb":{"@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#primaryimage","url":"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/09\/azure-automation-runbook-cover.png","contentUrl":"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/09\/azure-automation-runbook-cover.png","width":1355,"height":877,"caption":"Azure Automation runbook turned into a self-service web form with the au2mator portal"},{"@type":"BreadcrumbList","@id":"https:\/\/au2mator.com\/de\/blog\/azure-automation-runbook\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/au2mator.com\/de\/home\/"},{"@type":"ListItem","position":2,"name":"Azure Automation Runbook"}]},{"@type":"WebSite","@id":"https:\/\/au2mator.com\/de\/#website","url":"https:\/\/au2mator.com\/de\/","name":"au2mator","description":"","publisher":{"@id":"https:\/\/au2mator.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/au2mator.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/au2mator.com\/de\/#organization","name":"au2mator","url":"https:\/\/au2mator.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/au2mator.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/01\/HPLogoau2mator-2.png","contentUrl":"https:\/\/au2mator.com\/wp-content\/uploads\/2026\/01\/HPLogoau2mator-2.png","width":396,"height":86,"caption":"au2mator"},"image":{"@id":"https:\/\/au2mator.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.youtube.com\/channel\/UCUdkfOxKtCj0_21WjRv5q-w","https:\/\/www.linkedin.com\/company\/au2mator\/"]},{"@type":"Person","@id":"https:\/\/au2mator.com\/de\/#\/schema\/person\/64bb27dd52011f02a51c74811b8981f3","name":"Michael Seidl","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/7bce6d4773dd6e107176aa71ea37cceab7e2f576f2fd6c7606893b0d3206d2e6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7bce6d4773dd6e107176aa71ea37cceab7e2f576f2fd6c7606893b0d3206d2e6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7bce6d4773dd6e107176aa71ea37cceab7e2f576f2fd6c7606893b0d3206d2e6?s=96&d=mm&r=g","caption":"Michael Seidl"},"sameAs":["https:\/\/au2mator.com"],"url":"https:\/\/au2mator.com\/de\/blog\/author\/michael-seidl\/"}]}},"_links":{"self":[{"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/posts\/2646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/comments?post=2646"}],"version-history":[{"count":3,"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/posts\/2646\/revisions"}],"predecessor-version":[{"id":2651,"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/posts\/2646\/revisions\/2651"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/media\/2647"}],"wp:attachment":[{"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/media?parent=2646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/categories?post=2646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/au2mator.com\/de\/wp-json\/wp\/v2\/tags?post=2646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}