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-Key: 568005

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

Printed on: May 5, 2024 at 06:05 o'clock

Mitglied: 138701
138701 Apr 27, 2020 at 11:45:50 (UTC)
Goto Top
Nein.

Ileies
Member: emeriks
emeriks Apr 27, 2020 at 11:50:08 (UTC)
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.
Member: TK1987
TK1987 Apr 27, 2020 updated at 12:10:36 (UTC)
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
Member: erikro
erikro Apr 27, 2020 at 12:13:08 (UTC)
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
Mitglied: 138701
138701 Apr 27, 2020 at 12:18:34 (UTC)
Goto Top
Stimmt - Vielleicht hätte der TO etwas ins Detail gehen können, zu welchem Zweck die Frage gestellt war.
Member: erikro
erikro Apr 27, 2020 updated at 12:30:23 (UTC)
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
Mitglied: 138701
138701 Apr 27, 2020 at 12:36:36 (UTC)
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.
Member: TK1987
TK1987 Apr 27, 2020 updated at 12:45:20 (UTC)
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
Member: erikro
erikro Apr 27, 2020 at 12:50:50 (UTC)
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
Member: erikro
erikro Apr 27, 2020 at 13:01:24 (UTC)
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?
Member: TK1987
TK1987 Apr 27, 2020 at 13:08:22 (UTC)
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
Member: mayho33
mayho33 Apr 28, 2020 at 01:36:35 (UTC)
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!