2

Unterschied Hochkomma und Anführungszeichen in PowerShell

Es gibt bestimmt einige, die sich beim Entwickeln von PowerShell Scripts schon oft die Frage gestellt haben, was der Unterschied Zeischen Hochkomma und Anführungszeichen in PowerShell ist. Auf den Ersten Blick wird beides verwendet, um einen String (Zeichenkette) zu deklarieren. Doch es gibt kleine aber feine Unterschiede zwischen dem Apostroph (Hochkomma) und dem klassischen Anführungszeichen. Zum einen kann es Probleme mit Variablen in Strings geben, aber auch die Abarbeitungszeit des Scripts ist davon betroffen. Wir zeigen euch die Unterschiede in PowerShell.

 

Der Unterschied zwischen Hochkomma und Anführungszeichen in PowerShell

Es gibt definitiv einen Unterschied zwischen Hochkomma und Anführungszeichen in PowerShell. Der Unterschied mag in erster Linie nicht zu sehen sein, aber bei Variablen in Strings oder auch bei der Geschwindigkeit von Scripts spielt das eine große Rolle. Wir klären euch auf wann man ein Apostroph verwendet und wann nicht!

 

Deklarierung von Variablen in Strings

Ein großes Problem ist die Definition von Variablen. Hier macht es einen großen Unterschied ob ein Apostroph benutzt wird, oder ein Anführungszeichen. Ich erkläre es anhand eines Beispiels:

$var1 = "Ich bin ein String"
$var2 = 'Ich bin ein String'

write-host $var1
write-host $var2
Ich bin ein String
Ich bin ein String

Hier wird in beiden Fällen Ich bin ein String ausgegeben. Bis hier hin erkannt man noch keinen Unterschied.

 

Wollen wir nun die Variablen weiter verwenden, bekommen wir ein Problem:

$var = 'Ich bin auch ein String'

write-host "Er Sagte stets: $var"
write-host 'Er Sagte stets: $var'
Er Sagte stets: Ich bin auch ein String
Er Sagte stets: $var

Hier sieht man schön, dass die Variable in den Anführungszeichen aufgelöst wird. Die Ausgabe mit dem Hochkomma löst die Variable NICHT auf. Dafür hat diese zweite Variante auch Vorteile, aber hier komm ich später darauf zurück.

Unterschied zwischen Hochkomma und Afnführungszeichen PowerShell

Es gibt allerdings einen Workaround. Möchte man trotzdem Variablen in Strings verwenden, so muss man vorgehen wie im angegebenen Beispiel:

$source = "C:\yourSource\"
$destination = "D:\yourDestination\"
$parameter = '"{0}" "{1}"' -f $source, destination
write-host $parameter
"C:\yourSource\" "D:\yourDestination\"

Strings in PowerShell sollten aber immer mit einem ‘ Hochkomma, beziehungsweise Apostroph definiert werden. Warum? Das zeigt folgender Punkt.

 

Geschwindigkeit eines Scripts

Man glaubt es kaum, aber es macht tatsächlich einen Unterschied bei der Geschwindigkeit von PowerShell Scripts, ob man einen Apostroph oder Anführungszeichen zur definition von Strings benutzt. Als Beispiel lasse ich zwei einfache Schleifen eintausend mal durchlaufen. Diese geben einen String aus, einmal mit Apostroph und einmal mit Anführungszeichen. Mit dem Befehl Measure-Command lasse ich die verstrichene Zeit protokollieren.

$singleQuote = Measure-Command {
	for ($i = 0; $i -lt 1000; $i++) {
		write-host 'Ich bin ein SingleQuote!'
	}
}

$doubleQuote = Measure-Command {
	for ($i = 0; $i -lt 1000; $i++) {
		write-host "Ich bin ein DoubleQuote!"
	}
}
Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 813
Ticks             : 8130658
TotalDays         : 9,4104837962963E-06
TotalHours        : 0,000225851611111111
TotalMinutes      : 0,0135510966666667
TotalSeconds      : 0,8130658
TotalMilliseconds : 813,0658
Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 844
Ticks             : 8440967
TotalDays         : 9,76963773148148E-06
TotalHours        : 0,000234471305555556
TotalMinutes      : 0,0140682783333333
TotalSeconds      : 0,8440967
TotalMilliseconds : 844,0967

Wenn man einen Blick auf die Millisekunden wirft, sieht man einen Unterschied zwischen Hochkomma und Anführungszeichen in PowerShell. Der Unterschied ist zwar hier gering. Aber wenn man große Scripte mit tausenden Zeilen ausführte, dann macht sich so etwas doch bemerkbar.

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

Click Here to Leave a Comment Below 2 comments