PowerShell vs. Python: Een Strijd der Tijden

Wat is de beste programmeertaal? Je zou tien verschillende antwoorden kunnen krijgen als je tien verschillende ontwikkelaars vraagt. In dit artikel gaan we twee talen vergelijken; PowerShell en Python. Je krijgt een kijkje in elk van deze talen en begrijpt hoe ze zich verhouden en verschillen qua functies zoals syntaxis, beschikbaarheid op verschillende platforms, en meer.

Het is tijd voor een strijd tussen PowerShell en Python!

Tegen het einde van dit artikel, zul je in staat zijn om enkele veelvoorkomende vragen te beantwoorden:

  • Wat hebben beide talen gemeen?
  • Wat maakt ze verschillend?
  • Wat zijn de beste gebruiksscenario’s voor elk van hen?
  • Hoe verschilt de syntaxis?
  • Wat voor rol zou iemand moeten hebben om de ene boven de andere te benutten?

Dit artikel is voor degenen die weinig tot geen kennis hebben over een van beide talen en in de war zijn over het gebruik van PowerShell of Python. Dit artikel is ook voor degenen die al een van de talen begrijpen en graag meer willen leren over de andere.

Laten we beginnen!

Per Functie

Hoewel je de hele dag over de technische aspecten van Python en PowerShell zou kunnen praten, is een belangrijk onderdeel van het vergelijken van de twee talen het bepalen van welke soort functie het beste past bij elke taal.

Zowel PowerShell als Python zijn ontwikkeld aan twee zijden van een hek (Microsoft en de open source Linux-gemeenschap). De syntaxis, gemeenschap en daardoor het algehele gevoel van beide talen verschillen en zijn dus over het algemeen afgestemd op bepaalde functies.

Hier moet worden opgemerkt dat PowerShell (Core), dat vanaf versie 6.0.0 en later open source is geworden. De tijden veranderen.

Systeembeheerders

Zowel PowerShell als Python zijn geweldige talen om te leren voor systeembeheerders. Ze zijn allebei geweldige automatiseringstools en kunnen potentieel veel tijd besparen voor een systeembeheerder. Wellicht is voor Windows-systeembeheerders PowerShell een betere keuze, simpelweg vanwege de native .NET-frameworkintegratie.

Aan de andere kant is Python geweldig voor Linux-systeembeheerders.

Hoewel Python en PowerShell (Core) beide platformonafhankelijk zijn, zul je merken dat het overgrote deel van de functies verdeeld zal zijn tussen Windows en PowerShell, en Python en Linux.

Ontwikkelaars

Voor meer op ontwikkelaars gerichte banen is Python veruit de leider. Python heeft enorme ondersteuning op gebieden waar PowerShell nooit is geweest, zoals data science, statistische analyse en meer. Python voelt soms meer als een op wetenschap gerichte taal.

Python draait ook veel grote server-side webapps en andere “ontwikkelaarsvriendelijke” toepassingen.

Hoewel PowerShell kan worden gebruikt als programmeertaal, is het over het algemeen beter geschikt voor functies die meer automatisering vereisen, zoals DevOps of algemene systeembeheerautomatisering.

Per besturingssysteem

PowerShell

PowerShell is de held voor Windows-omgevingen; het is de beste vaardigheid die je kunt benutten voor het automatiseren van taken in Windows. Dit geldt vooral als het gaat om producten zoals Active Directory en Microsoft Exchange, zowel in on-premises als in Office 365-varianten.

Aangezien PowerShell directe toegang heeft tot het .NET Framework, is het perfect geïntegreerd met alle Windows-systemen en kan het gemakkelijk worden gebruikt om elke taak te voltooien.

PowerShell heeft echter ook ondersteuning voor Linux, maar op het moment van schrijven is het niet bijna zo prevalent als Python.

Python

Python is over het algemeen beter in Linux-omgevingen. Vanwege de diepe wortels in de Linux-gemeenschap, vind je Python-modules om bijna alles in Linux te doen.

Python kan ook draaien op andere platformen zoals iOS en AIX.

Per Taak

PowerShell

Je kunt PowerShell gebruiken om een tool te creëren voor het beheren van dagelijkse taken, en je kunt zelfs een GUI creëren met Windows PowerShell voor je tool om gebruiksvriendelijker te zijn.

Python

Python wordt over het algemeen het beste gebruikt voor “zwaardere” taken zoals machine learning, statistiek, datawetenschap, en server-side web- en desktopapplicaties. Python heeft ook geweldige ondersteuning voor beeldverwerking.

Het Begrijpen van de Syntax Gemeenschappelijkheden en Verschillen

Laten we ons verdiepen in de kern van elke taal om ze te vergelijken en te contrasteren.

PowerShell en Python zijn objectgeoriënteerd, wat betekent dat beide zijn gebouwd op het concept van logische objecten waar ze objecten creëren, manipuleren en hergebruiken om specifieke taken uit te voeren.

Zowel PowerShell als Python hergebruiken code door middel van modules. Modules kunnen potentieel later in andere programma’s hergebruikt worden, of je kunt direct modules importeren die door andere programmeurs zijn gemaakt.

Beide talen hebben een grote bibliotheek met modules die je eenvoudig kunt gebruiken in je scripts.

PowerShell is een op taak gebaseerde command-line shell en scripttaal gebouwd op het .NET-framework dat .NET-framework objecten accepteert en retourneert, terwijl Python een geïnterpreteerde programmeertaal is

De Python-interpreter neemt de leesbare code en maakt er een andere vorm van code van die begrepen wordt door de interpreter, om later te worden veranderd naar machineleesbare code waar de daadwerkelijke uitvoering plaatsvindt.

Laten we nu beginnen met de basisprincipes van beide talen, zoals commentaar, variabelen declareren, voorwaarden en andere basisprincipes, om een beter beeld te krijgen van hun overeenkomsten en verschillen.

Commentaar

Het maken van een enkele regel opmerking in PowerShell of Python is identiek – gebruik het hash-teken (#) aan het begin van de regel zoals hieronder.

# Dit is een PowerShell-opmerking en wordt niet uitgevoerd
# Dit is een Python-opmerking en wordt niet uitgevoerd.

Variabelen declareren

Alle variabelen in PowerShell beginnen met een $ gevolgd door een naam. Hieronder zie je hoe een variabele wordt toegewezen om een integer vast te houden.

$var = 1

Het definiëren van stringvariabelen werkt op dezelfde manier in PowerShell, maar je moet de waarde tussen enkele of dubbele aanhalingstekens plaatsen.

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

Bekijk het about_Variables-document voor meer informatie over PowerShell-variabelen.

In Python worden variabelen bijna identiek behandeld, maar het is niet nodig dat de variabele begint met een $.

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

Je kunt meer leren over Python-variabelen via W3Schools en vele andere online bronnen.

Werken met Wiskundige Bewerkingen

In PowerShell en Python is elk positief of negatief getal zonder decimalen een geheel getal. Standaard worden ze automatisch toegewezen aan een variabele van het type integer. Wiskundige bewerkingen kunnen normaal worden uitgevoerd op deze variabelen.

In PowerShell kun je hieronder enkele voorbeelden zien van eenvoudige wiskundige bewerkingen.

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

Bekijk de How to do Math in PowerShell-serie op RedmondMag voor meer informatie.

Vergelijkbaar kun je in Python ook eenvoudige wiskundige bewerkingen uitvoeren zoals hieronder weergegeven.

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

Leer meer over wiskundige bewerkingen in Python in dit nuttige artikel op geeks2geeks.com.

Gebruik maken van Voorwaardelijke Verklaringen

Voorwaardelijke verklaringen zijn belangrijk voor elke programmeertaal. Ze stellen de ontwikkelaar in staat de stroom van de code te wijzigen, afhankelijk van één of meer voorwaarden. Wanneer je te maken krijgt met voorwaardelijke verklaringen zoals if/then-constructies, zul je merken dat PowerShell en Python bijna identiek zijn.

Hieronder kunt u zien dat er een klein, maar zeer belangrijk verschil is tussen de twee talen. PowerShell is sterk afhankelijk van haakjes ( ), accolades { } en andere speciale tekens, maar Python gebruikt inspringing.

Let op alle haakjes en accolades hieronder in het PowerShell-voorbeeld.

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

Tegenstrijdig met PowerShell-code, met de onderstaande Python-code. U ziet alleen dubbele punten om het einde van conditionele verklaringen aan te geven en spaties om de uit te voeren code aan te geven.

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

Om dit te demonstreren, laten we eens kijken naar hoe een typische PowerShell if/then-verklaring eruitziet en zich gedraagt. Wanneer de onderstaande code wordt uitgevoerd, ziet u een uitvoer van 77 is groter dan 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"
}

In tegenstelling hiermee, let op hoe dezelfde taak wordt uitgevoerd in Python. Er zijn nogal wat verschillen, waaronder verschillende operators en opdrachten om tekst naar de console uit te voeren.

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

Looping

Een ander belangrijk concept in programmeertalen is looping. Loops stellen een taal in staat om een stuk code continu te herhalen, totdat aan een voorwaarde is voldaan, of voor een bepaald aantal keren.

In PowerShell zou een veelvoorkomende foreach-verklaring er als volgt uitzien.

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

In Python zou een vergelijkbare loop die dezelfde taak uitvoert, een for-loop gebruiken zoals hieronder weergegeven.

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

Er is een grote gelijkenis in de syntaxis die wordt gebruikt door PowerShell en Python, vooral voor de basisprincipes en het kerngebruik van de talen. Deze overeenkomsten zijn een enorm voordeel voor iedereen die PowerShell beheerst en meer wil leren over Python, of vice versa.

Hetzelfde Probleem Anders Oplossen

Laten we nu laten zien hoe je op een iets andere manier een veelvoorkomend probleem kunt oplossen met zowel PowerShell als Python. Om dat te doen, gaan we een eenvoudig tekstbestand lezen met door regels gescheiden getallen en alleen een bepaald bereik van getallen naar de console retourneren.

Het bestand dat we zullen gebruiken, heet input_text.txt en bevat door regels gescheiden getallen met een breed scala van 1 tot 6345.

We zullen een functie maken in zowel PowerShell als Python om alle getallen die uit het bestand worden geretourneerd te verwerken.

Verwerken van een Bestand met PowerShell

Hieronder zie je hoe je dit zou kunnen doen in PowerShell.

Define a function called Get-TwoDigits
 function Get-TwoDigits {
     [CmdletBinding()]
     param(
         [Parameter()]
         $List ## Geef een invoerparameter genaamd List die getallen vertegenwoordigt
     )
     ## Loop over elk getal in List. Als het getal groter is dan 9 en minder
     ## dan 99, retourneer dat getal naar de console
     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

Wanneer je Get-TwoDigits uitvoert, zul je zien dat PowerShell alleen een getal zal retourneren dat tussen 9 en 99 ligt in input_text.txt.

Verwerken van een bestand met Python

Nu zullen we exact dezelfde stappen uitvoeren met Python om eventuele syntaxisverschillen op te merken.

## Open het bestand met de open() methode
File_Read = open("/PS_Vs._PY/input_text.txt")

## Lees het bestand en splits de grote string op in een array met de splitlines() methode
inputData = (File_Read.read().splitlines())

## Sluit het geopende bestand
File_Read.close()

## Definieer een functie genaamd two_digits met een enkele parameter genaamd input_list
def two_digits (input_list):
    ## Loop door elk nummer in de lijst. Als het nummer groter is dan 9 en kleiner
    ## dan 99, retourneer dat nummer naar de console
    for num in input_list:
        if (int(num) > 9) and (int(num) <= 99):
            print(num)


>>> two_digits(inputData)

Wanneer je de functie two_digits() uitvoert, zul je zien dat Python alleen een nummer zal retourneren dat tussen 9 en 99 ligt in input_text.txt.

Het creëren van een functie in Python heeft bijna dezelfde structuur. Houd er rekening mee dat inspringen in Python essentieel is, evenals hoofdlettergevoeligheid.

Verder lezen

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