PowerShell vs. Python: Ein Kampf für die Ewigkeit

Welche ist die beste Programmiersprache? Möglicherweise erhalten Sie zehn verschiedene Antworten, wenn Sie zehn verschiedene Entwickler fragen. In diesem Artikel werden wir zwei Sprachen vergleichen: PowerShell und Python. Sie erhalten einen Einblick in jede dieser Sprachen und erfahren, wie sie sich in Funktionen wie Syntax, Verfügbarkeit auf verschiedenen Plattformen und mehr vergleichen und unterscheiden.

Es ist Zeit für einen PowerShell gegen Python Kampf!

Am Ende dieses Artikels werden Sie in der Lage sein, einige häufig gestellte Fragen zu beantworten:

  • Was haben beide Sprachen gemeinsam?
  • Was macht sie unterschiedlich?
  • Welche Anwendungsfälle eignen sich am besten für jede von ihnen?
  • Wie unterscheidet sich die Syntax?
  • Welche Art von Rolle müsste jemand haben, um das eine gegenüber dem anderen optimal nutzen zu können?

Dieser Artikel richtet sich an diejenigen, die wenig bis gar keine Kenntnisse über eine der beiden Sprachen haben und sich darüber im Klaren sind, ob sie PowerShell oder Python verwenden sollen. Dieser Artikel richtet sich auch an diejenigen, die bereits eine der Sprachen verstehen und mehr über die andere lernen möchten.

Lasst uns eintauchen!

Nach Job-Rolle

Obwohl Sie den ganzen Tag über die technischen Aspekte von Python und PowerShell sprechen könnten, ist ein wichtiger Teil des Vergleichs der beiden Sprachen zu bestimmen, welche Art von Job-Rolle besser zu welcher Sprache passt.

Sowohl PowerShell als auch Python wurden auf zwei Seiten eines Zauns entwickelt (Microsoft und die Open-Source-Linux-Community). Die Syntax, die Community und somit das allgemeine Gefühl beider Sprachen sind unterschiedlich und daher werden sie im Allgemeinen für bestimmte Job-Rollen übernommen.

Hier sollte darauf hingewiesen werden, dass PowerShell (Core), das ab Version 6.0.0 und später Open Source ist. Die Zeiten ändern sich.

Systemadministratoren

Sowohl PowerShell als auch Python sind großartige Sprachen, die Systemadministratoren erlernen können. Sie sind beide großartige Automatisierungstools und können einem Systemadministrator potenziell viel Zeit sparen. Allerdings wird PowerShell für Windows-Systemadministratoren aufgrund seiner nativen .NET Framework-Integration wahrscheinlich die bessere Wahl sein.

Hingegen ist Python großartig für Linux-Systemadministratoren.

Obwohl Python und PowerShell (Core) plattformübergreifend sind, werden Sie feststellen, dass die große Mehrheit der Arbeitsplätze zwischen Windows und PowerShell sowie zwischen Python und Linux aufgeteilt ist.

Entwickler

Für auf Entwickler ausgerichtete Jobs ist Python mit Abstand führend. Python hat massive Unterstützung in Bereichen, die PowerShell nie berührt hat, wie Datenwissenschaft, statistische Analyse und mehr. Python fühlt sich manchmal eher wie eine wissenschaftlich orientierte Sprache an.

Python betreibt auch viele große serverseitige Webanwendungen und andere „entwicklerfreundliche“ Anwendungen.

Obwohl PowerShell als Entwicklungssprache verwendet werden kann, eignet es sich in der Regel besser für Arbeitsplätze, die mehr Automatisierung erfordern, wie DevOps oder allgemeine Systemadministrator-Automatisierung.

Nach Betriebssystem

PowerShell

PowerShell ist der Held für Windows-Umgebungen. Es ist die beste Fähigkeit, die Sie für die Automatisierung von Aufgaben in Windows nutzen können. Dies gilt insbesondere für Produkte wie Active Directory und Microsoft Exchange in lokaler und Office 365-Variante.

Da PowerShell direkten Zugriff auf das .NET Framework hat, ist es perfekt in alle Windows-Systeme integriert und kann problemlos verwendet werden, um jede Aufgabe zu erledigen.

Allerdings unterstützt PowerShell auch Linux, aber zum Zeitpunkt dieses Schreibens ist es nicht annähernd so verbreitet wie Python.

Python

Python ist im Allgemeinen besser in Linux-Umgebungen. Aufgrund seiner tiefen Verankerung in der Linux-Community finden Sie Python-Module, um nahezu alles in Linux zu tun.

Python kann auch auf anderen Plattformen wie iOS und AIX ausgeführt werden.

Nach Aufgabe

PowerShell

Sie können PowerShell verwenden, um ein Tool zur Verwaltung täglicher Aufgaben zu erstellen, und Sie können sogar eine GUI erstellen, indem Sie Windows PowerShell für Ihr Tool verwenden, um es benutzerfreundlicher zu gestalten.

Python

Python eignet sich im Allgemeinen am besten für „schwerere“ Aufgaben wie maschinelles Lernen, Statistik, Datenwissenschaft und serverseitige Web- und Desktopanwendungen. Python hat auch eine hervorragende Unterstützung für die Bildverarbeitung.

Verständnis der Syntax-Gemeinsamkeiten und -Unterschiede

Lassen Sie uns zu den Grundlagen jeder Sprache kommen, um sie zu vergleichen und zu kontrastieren.

PowerShell und Python sind objektorientiert, was bedeutet, dass beide auf dem Konzept logischer Objekte aufbauen, bei dem sie Objekte erstellen, manipulieren und wiederverwenden, um bestimmte Aufgaben auszuführen.

Sowohl PowerShell als auch Python verwenden Code durch Module. Module können später potenziell in anderen Programmen wiederverwendet oder Sie können direkt Module importieren, die von anderen Programmierern erstellt wurden.

Beide Sprachen verfügen über eine große Bibliothek von Modulen, die Sie problemlos in Ihren Skripten verwenden können.

PowerShell ist eine aufgabenbasierte Befehlszeilenshell und Skriptsprache, die auf dem .NET Framework aufbaut und .NET Framework-Objekte akzeptiert und zurückgibt, während Python eine interpretierte Programmiersprache ist.

Der Python-Interpreter nimmt den für Menschen lesbaren Code und erstellt eine andere Form von Code, die vom Interpreter verstanden wird und später in einen für Maschinen lesbaren Code geändert wird, wo die eigentliche Ausführung stattfindet.

Lassen Sie uns nun mit den Grundlagen beider Sprachen beginnen, wie z.B. Kommentieren, Variablen deklarieren, Bedingungen und andere Grundlagen, um ein besseres Verständnis für ihre Ähnlichkeiten und Unterschiede zu bekommen.

Kommentieren

Einen einzelnen Kommentar in PowerShell oder Python zu erstellen, ist identisch – verwenden Sie das Rautezeichen (#) am Anfang der Zeile wie unten dargestellt.

# Dies ist ein PowerShell-Kommentar und wird nicht ausgeführt
# Dies ist ein Python-Kommentar und wird nicht ausgeführt.

Variablen deklarieren

Alle Variablen in PowerShell beginnen mit einem $, gefolgt von einem Namen. Im folgenden Beispiel sehen Sie, wie eine Variable zugewiesen wird, um eine Ganzzahl zu halten.

$var = 1

Das Definieren von Zeichenkettenvariablen funktioniert in PowerShell auf die gleiche Weise, aber Sie müssen den Wert in einfache oder doppelte Anführungszeichen setzen.

$var2 = "string"
$var3 = 'string'

Schauen Sie sich das About_Variables-Dokument für weitere Informationen zu PowerShell-Variablen an.

In Python werden Variablen fast identisch behandelt, erfordern jedoch nicht, dass die Variable mit einem $ beginnt.

var1 = 7
var2 = "string"
var3 = 'string'

Weitere Informationen zu Python-Variablen finden Sie auf W3Schools und vielen anderen Online-Ressourcen.

Arbeiten mit mathematischen Operationen

In PowerShell und Python ist eine positive oder negative Zahl ohne Dezimalstellen eine Ganzzahl. Standardmäßig werden sie automatisch einer Variablen vom Typ Ganzzahl zugewiesen. Mathematische Operationen können normal auf diesen Variablen ausgeführt werden.

In PowerShell finden Sie unten einige Beispiele für grundlegende mathematische Operationen.

$int1 = 70
$int2 = 77
$int3 = -10
$int1 + $int2
$int2 - $int1
$int1 + $Int3
Python and integers

Lesen Sie den Artikelserie How to do Math in PowerShell auf RedmondMag, um weitere Informationen zu erhalten.

In Python können Sie ähnlich wie gezeigt grundlegende mathematische Operationen durchführen.

int1 = 70
int2 = 77
int3 = -10
int1 + int2
int2 - int1
int1 + int3
Artitmetic in Python

Erfahren Sie in diesem nützlichen Artikel auf geeks2geeks.com mehr über mathematische Operationen in Python.

Verwendung von bedingten Anweisungen

Bedingte Anweisungen sind wichtig für jede Programmiersprache. Bedingte Anweisungen ermöglichen es dem Entwickler, den Codefluss je nach einer oder mehreren Bedingungen umzuleiten. Wenn Sie sich mit bedingten Anweisungen wie if/then-Konstrukten befassen, werden Sie feststellen, dass PowerShell und Python nahezu identisch sind.

Sie können unten sehen, dass es einen kleinen, aber sehr wichtigen Unterschied zwischen den beiden Sprachen gibt. PowerShell ist stark abhängig von Klammern (), geschweiften Klammern {} und anderen Sonderzeichen, während Python Einrückungen verwendet.

Bemerken Sie alle Klammern und geschweiften Klammern im PowerShell-Beispiel unten.

if (Condition) {
    Code to be executed if the condition is true
} else {
    Other code to be executed if the condition is false
}

Widersprechen Sie dem PowerShell-Code mit dem Python-Code unten. Sie werden nur Doppelpunkte sehen, um das Ende von bedingten Anweisungen anzuzeigen, und Leerzeichen, um den auszuführenden Code anzuzeigen.

if condition:
    Code to be executed if the condition is true
else:
    Other code to be executed if the condition is false

Zur Veranschaulichung schauen wir uns an, wie eine typische PowerShell if/then-Anweisung aussieht und funktioniert. Wenn der unten stehende Code ausgeführt wird, sehen Sie eine Ausgabe von 77 ist größer als 70.

$var1 = 77
$var2 = 70
if ($var1 -gt $var2) {
    Write-Host -Object "$var1 is greater than $var2"
} else {
    Write-host -Object "$var1 is less than $var2"
}

Im Gegensatz dazu sehen Sie, wie dieselbe Aufgabe in Python ausgeführt wird. Es gibt einige Unterschiede, einschließlich unterschiedlicher Operatoren und Befehle zum Ausgeben von Text in die Konsole.

if var1 > var2:
    print(f"{var1} is greater than {var2}")
else:
    print(f"{var1} is less than {var2}")

Schleifen

Ein weiteres wichtiges Konzept in Programmiersprachen sind Schleifen. Schleifen ermöglichen es einer Sprache, einen Code kontinuierlich zu wiederholen oder zu iterieren, bis eine Bedingung erfüllt ist oder eine bestimmte Anzahl von Malen.

In PowerShell würde eine häufige foreach-Anweisung wie folgt aussehen.

foreach ($item in $list) {
	Code to be executed for each item
}

In Python würde eine ähnliche Schleife, die dieselbe Aufgabe ausführt, eine for-Schleife verwenden, wie unten gezeigt.

for item in list:
	Code to be executed for each item

Es gibt eine große Ähnlichkeit in der Syntax, die sowohl von PowerShell als auch von Python verwendet wird, insbesondere für die Grundlagen und den Kern der Sprachen. Diese Ähnlichkeiten sind ein großer Vorteil für jeden, der PowerShell beherrscht und mehr über Python lernen möchte, oder umgekehrt.

Das gleiche Problem auf unterschiedliche Weise lösen

Zeigen wir nun, wie man ein gemeinsames Problem mit sowohl PowerShell als auch Python etwas anders lösen kann. Dazu werden wir eine einfache Textdatei mit zeilenweise nummerierten Zahlen lesen und nur einen bestimmten Zahlenbereich in die Konsole zurückgeben.

Die Datei, die wir verwenden werden, heißt input_text.txt und enthält zeilenweise nummerierte Zahlen im Bereich von 1 bis 6345.

Wir werden eine Funktion sowohl in PowerShell als auch in Python erstellen, um alle Zahlen aus der Datei zu verarbeiten.

Verarbeiten einer Datei mit PowerShell

Nachfolgend sehen Sie, wie Sie dies in PowerShell umsetzen könnten.

Define a function called Get-TwoDigits
 function Get-TwoDigits {
     [CmdletBinding()]
     param(
         [Parameter()]
         $List ## Geben Sie einen Eingabeparameter namens Liste an, der Zahlen darstellt
     )
     ## Iterieren Sie über jede Zahl in der Liste. Wenn die Zahl größer als 9 und kleiner
     ## als 99 ist, geben Sie diese Zahl in die Konsole zurück
     foreach($num in $List){
         if($num -gt 9 -and $num -le 99 ){
             Write-Host $num
         }
 }
 }
 Read the text file and place contents into an array called inputlist
 PS51> $inputlist = Get-Content -Path .\input_text.txt
 Call the function providing the contents of the file as the List parameter
 PS51> Get-TwoDigits -List $inputlist

Wenn Sie Get-TwoDigits ausführen, sehen Sie, dass PowerShell nur eine Zahl in input_text.txt zurückgibt, die zwischen 9 und 99 liegt.

Verarbeitung einer Datei mit Python

Jetzt führen wir dieselben Schritte mit Python aus, um die Syntaxunterschiede zu erkennen.

## Öffnen Sie den Dateizugriff mit der Methode open()
File_Read = open("/PS_Vs._PY/input_text.txt")

## Lesen Sie die Datei und teilen Sie den großen String mit der Methode splitlines() in ein Array auf
inputData = (File_Read.read().splitlines())

## Schließen Sie den geöffneten Dateizugriff
File_Read.close()

## Definieren Sie eine Funktion namens two_digits mit einem einzelnen Parameter namens input_list
def two_digits (input_list):
    ## Iterieren Sie über jede Zahl in der Liste. Wenn die Zahl größer als 9 und kleiner
    ## als 99 ist, geben Sie diese Zahl in die Konsole aus
    for num in input_list:
        if (int(num) > 9) and (int(num) <= 99):
            print(num)


>>> two_digits(inputData)

Wenn Sie die Funktion two_digits() ausführen, sehen Sie, dass Python nur eine Zahl in input_text.txt zurückgibt, die zwischen 9 und 99 liegt.

Das Erstellen einer Funktion in Python hat fast die gleiche Struktur. Beachten Sie, dass Einrückung in Python wichtig ist, ebenso wie die Groß- und Kleinschreibung.

Weitere Informationen

Source:
https://adamtheautomator.com/powershell-vs-python/