inspiratio
Goto Top

Serversprache und Powershell Skripte

Hallo zusammen,

spielt es eine Rolle für PS Skripte in welche Sprache das Betriebssystem installiert ist (z.B. Server 2012 R2 in Deutsch) um diese korrekt auszuführen?

Viele Grüße,
Rudolf Kleinfelder

Content-ID: 568005

Url: https://administrator.de/contentid/568005

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

138701
138701 27.04.2020 um 13:45:50 Uhr
Goto Top
Nein.

Ileies
emeriks
emeriks 27.04.2020 um 13:50:08 Uhr
Goto Top
Hi,
für PS selbst nicht. Nur wenn man mit PS die Ausgabe von irgendwelchen anderen, Nicht-PS-Kommandos auswertet, dann muss man da ggf. die unterschiedlichen Ausgaben beachten.

E.
TK1987
TK1987 27.04.2020 aktualisiert um 14:10:36 Uhr
Goto Top
Moin,

Zitat von @138701:
Nein.

Zitat von @emeriks:
für PS selbst nicht.
😮 ganz so einfach ist es nicht. Je nachdem was man tut, können die regional settings sehr wohl das Skript beeinflussen.

Als Beispiel:
Wandelt man einen Dezimalwert in eine Zeichenkette um (etwa um eine feste Anzahl Nachkommastellen zu erhalten), so wird der Dezimalpunkt bei deutschen Settings in ein Komma umgewandelt. Möchte man das ganze Später wieder umkehren, also zurück zu einem Dezimalwert, muss man vorher zwingend das Komma wieder durch einen Punkt ersetzen, sonst wird das Komma als 1000er-Trennzeichen interpretiert.

Gruß Thomas
erikro
erikro 27.04.2020 um 14:13:08 Uhr
Goto Top
Moin,

Antwort von Radio Eriwan: Im Prinzip nein, aber wenn Du textuelle Ausgaben abfragst und z. B. danach filterst, dann ja.

Liebe Grüße

Erik
138701
138701 27.04.2020 um 14:18:34 Uhr
Goto Top
Stimmt - Vielleicht hätte der TO etwas ins Detail gehen können, zu welchem Zweck die Frage gestellt war.
erikro
erikro 27.04.2020 aktualisiert um 14:30:23 Uhr
Goto Top
Zitat von @TK1987:

Moin,

Zitat von @138701:
Nein.

Zitat von @emeriks:
für PS selbst nicht.
😮 ganz so einfach ist es nicht. Je nachdem was man tut, können die regional settings sehr wohl das Skript beeinflussen.

Als Beispiel:
Wandelt man einen Dezimalwert in eine Zeichenkette um (etwa um eine feste Anzahl Nachkommastellen zu erhalten), so wird der Dezimalpunkt bei deutschen Settings in ein Komma umgewandelt. Möchte man das ganze Später wieder umkehren, also zurück zu einem Dezimalwert, muss man vorher zwingend das Komma wieder durch einen Punkt ersetzen, sonst wird das Komma als 1000er-Trennzeichen interpretiert.

Nö. Das klappt bei der PS problemlos:

PS E:\test> $zahl = 1.1
PS E:\test> $zahl
1,1
PS E:\test> [string]$string = $zahl
PS E:\test> $string
1.1
PS E:\test> $zahl = 1,1
PS E:\test> $zahl
1
1
PS E:\test> [decimal]$zahl = $string
PS E:\test> $zahl
1,1
PS E:\test> $zahl.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Decimal                                  System.ValueType
PS E:\test> $String.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

Liebe Grüße

Erik
138701
138701 27.04.2020 um 14:36:36 Uhr
Goto Top
Das Date-Format im Deutschen: 27.04.2020
Im Englischen: 27/04/2020

Zeit: 14:36
Time: 2:36 PM

Um so etwas geht es.
TK1987
TK1987 27.04.2020 aktualisiert um 14:45:20 Uhr
Goto Top
Zitat von @erikro:
Nö. Das klappt bei der PS problemlos:
Nein, tut es nicht, wenn man wie ich oben geschrieben habe, die Zahl etwa mit festen Nachkommasstellen ausgibt
$Zahl=5.78545484

# Egal ob so:
$Text="{0:f4}" -f $Zahl  

# oder so:
$Text=$Zahl.ToString('0.0000')  

[decimal]$Text
57855
erikro
erikro 27.04.2020 um 14:50:50 Uhr
Goto Top
Zitat von @138701:

Das Date-Format im Deutschen: 27.04.2020
Im Englischen: 27/04/2020

Zeit: 14:36
Time: 2:36 PM

Um so etwas geht es.

Das sollte beim Skriptablauf auch kein Problem darstellen. Da bestimmen die Formatangaben erstmal nur, wie das angezeigt, aber nicht wie es gespeichert wird.

PS E:\test> if($(get-date) -gt $(get-date -month 3)) {write-host "wahr"}  
wahr
PS E:\test> if($(get-date -format "MMMM") -gt $(get-date -month 3)) {write-host "wahr"}  
wahr
erikro
erikro 27.04.2020 um 15:01:24 Uhr
Goto Top
Zitat von @TK1987:

Zitat von @erikro:
Nö. Das klappt bei der PS problemlos:
Nein, tut es nicht, wenn man wie ich oben geschrieben habe, die Zahl etwa mit festen Nachkommasstellen ausgibt
$Zahl=5.78545484

  1. Egal ob so:
$Text="{0:f4}" -f $Zahl

  1. oder so:
$Text=$Zahl.ToString('0.0000')

ja gut, aber warum sollte ich das tun und nicht [math]::round oder ::floor oder ::ceiling nehmen?
TK1987
TK1987 27.04.2020 um 15:08:22 Uhr
Goto Top
Zitat von @erikro:
ja gut, aber warum sollte ich das tun und nicht [math]::round oder ::floor oder ::ceiling nehmen?
Hauptsächlich um Benutzereingaben abzufangen und auf Gültigkeit zu überprüfen, ansonsten würde man natürlich eher mit [math]::round() arbeiten.
Spielt aber auch alles keine Rolle warum wieso weshalb, die Frage des TE war, ob regional settings unterschiedliche Auswirkungen haben können - und unter Umständen ist das eben so.

Gruß Thomas
mayho33
mayho33 28.04.2020 um 03:36:35 Uhr
Goto Top
WIe viele hier schon geschrieben haben ist es PS an sich egal welches Language das OS verwendet. Du willst aber eventuell ein bestimmtes Format bei der Ausgabe von z.B. DateTime.

Das kannst du z.B. so festlegen:

Get-Date -Format "yyyy.MM.dd HH:mm:ss"  

Oder du legst global die Culture fest. Siehe Beispiel:

https://devblogs.microsoft.com/scripting/use-culture-information-in-powe ...

Grüße!