3 min read
Skriptabbruch verhindern: PowerShell-Fehler clever behandeln
Da $error eine globale Variable ist, solltest du in Erwägung ziehen, eine eigene Protokollierungsvariable für die...
PowerShell-Erfolgsrezepte – die Profi-Tipps für effektives Scripting
URLs sind überall – ob in Web Services, SharePoint oder Websites. Aber wusstest du, dass PowerShell dir helfen kann, diese scheinbar einfachen Zeichenfolgen effektiv zu codieren und zu decodieren? In diesem Artikel erfährst du alles über die verschiedenen Methoden, wie du URLs in PowerShell manipulieren kannst. Wir vergleichen die subtilen Unterschiede zwischen [System.Web.HttpUtility] und [System.Uri] und zeigen dir, welche API in welchen Situationen am besten funktioniert. Lass uns gemeinsam die Geheimnisse der URL-Manipulation entdecken.
Webdienste, SharePoint, Websites und andere Einrichtungen verwenden URLs, und obwohl URLs im Grunde genommen Zeichenketten sind, halten sie sich an bestimmte Regeln und Standards. PowerShell kann kodieren (Informationen in eine wohlgeformte URL umwandeln) und dekodieren (Informationen aus einer URL extrahieren), indem es auf entsprechende APIs zugreift.
Typischerweise verwenden PowerShell-Skripte [System.Web.HttpUtility] oder [System.Uri]. Wir werde im Folgenden beide vorstellen und ihre feinen Unterschiede hervorheben.
Hier ein Dekodierungsbeispiel:
$url = 'https://some.site/with%20spa+ces?and+arguments'
[System.Uri]::UnescapeDataString($url)
Add-Type -AssemblyName System.Web
[System.Web.HttpUtility]::UrlDecode($url)
Das Ergebnis zeigt subtile Unterschiede - UnescapeDataString() interpretiert "+" nicht als "kodiertes Leerzeichen":
https://some.site/with spa+ces?and+arguments
https://some.site/with spa ces?and arguments
Hier ein Kodierungsbeispiel:
$text = 'dieser Text (einschließlich & spezielle =? Zeichen)'
[System.Uri]::EscapeDataString($text)
[System.Web.HttpUtility]::UrlEncode($text)
Auch hier wird das nicht standardisierte "+" nur von der HttpUtility verwendet, während EscapeDataString() die Unicode-Kodierung für alle Sonderzeichen einschließlich Leerzeichen verwendet:
this%20text%20%28including%20%26%20special%20%3D%3F%20chars%29
this+text+(einschließlich+%26+spezial+%3d%3f+Zeichen)
Die Wahl der richtigen API hängt von den Daten ab, mit denen du arbeitest: Wenn du sowohl kodieren als auch dekodieren (volle Kontrolle haben) willst, dann bevorzugst du vielleicht die HttpUtility-Kurzform. Wenn die Kompatibilität mit externen Quellen wichtig ist, ist für dich vielleicht die standardisiertere Methode in System.Uri passender.
Entfessele das volle Potenzial von PowerShell mit unserem praktischen Poster. Egal, ob frischer Einsteiger oder erfahrener Profi, dieser Spickzettel ist so konzipiert, dass du schnell die wichtigsten und am häufigsten verwendeten Cmdlets findest.
Das Poster ist zum Download und in Papierform erhältlich.
Okt 17, 2024 by Aleksandar Nikolić und Dr. Tobias Weltner
Da $error eine globale Variable ist, solltest du in Erwägung ziehen, eine eigene Protokollierungsvariable für die...
Okt 30, 2024 by Aleksandar Nikolić und Dr. Tobias Weltner
Verabschiede dich von fest codierten Pfaden und Einstellungen! Vereinfache deine PowerShell-Skripte, indem du...
Okt 24, 2024 by Aleksandar Nikolić und Dr. Tobias Weltner
Hier kommt die nächste Strategie zur Fehlerbehandlung, nachdem wir zuvor die Echtzeit und verzögerte Fehlerbehandlung...
Tobias Weltner und Aleksandar Nikolić haben gemeinsam die Blogpost-Reihe „Tobias&Aleksandars PowerShell-Tipps“ verfasst. Deshalb möchten wir euch beide hier vorstellen:
----------------------------
Aleksandar Nikolić ist ein Microsoft Azure MVP und Mitbegründer von PowerShellMagazine.com, der ultimativen Online-Ressource für PowerShell-Enthusiasten. Mit über 18 Jahren Erfahrung in der Systemadministration ist er ein angesehener Trainer und Redner, der rund um den Globus reist, um sein Wissen und seine Fähigkeiten über Azure, Entra und PowerShell weiterzugeben. Er hat auf IT-Veranstaltungen wie Microsoft Ignite, ESPC, NIC, CloudBrew, NTK und der PowerShell Conference Europe gesprochen.
----------------------------
Tobias ist ein langjähriger Microsoft MVP und war von Anfang an an der Entwicklung von PowerShell beteiligt. Er hat die PowerShell IDE „ISESteroids“ erfunden, zahlreiche Bücher über PowerShell für Microsoft Press und O'Reilly geschrieben, die PowerShell Conference EU (psconf.eu) gegründet und trägt derzeit als Mitglied der „Microsoft Cmdlet Working Group“ zur Weiterentwicklung der PowerShell bei. Tobias gibt sein Wissen als Berater in Projekten und als Trainer in Inhouse-Schulungen für zahlreiche Unternehmen und Agenturen in ganz Europa weiter.