Gibt es eine PowerShell-Entsprechung für:
%Vor%? Oder wie kann man festlegen, dass alle Zeichenketten unabhängig von den Maschinenkonfigurationen einer Kultur folgen sollen?
Dies ist die Funktion, die ich zum Testen von Zeichenketten / Formaten in anderen Kulturen verwende:
%Vor% Für WinServer2012 und Win8 können Sie Set-Culture
verwenden. Wenn Set-Culture
die Kultur für Ihren Benutzer festlegt, müssen Sie eine andere Powershell-Instanz öffnen, um davon zu profitieren. Es ändert auch nicht die Kultur der Ausführung von PS-Instanzen. Natürlich könnten Sie dann in Ihrer aktuellen Instanz eine neue Powershell-Instanz starten. Dies ist nicht genau das, wonach gefragt wird, aber eng verwandt.
Wäre nett, wenn sie das zurück an Win7 und Server 2008 portieren würden oder es zu einem Feature der Powershell selbst machen würden.
Siehe hier für Details zu ObjectCmdletBase.Culture
Eigenschaft.
Ruft den Wert der Kultur ab und legt ihn fest Parameter des abgeleiteten Cmdlet.
Diese Antwort bezieht sich auf die aktuelle Kultur , die Einstellungen wie Datumsformat, Währung, Zahlenformatierung, Sortierfolge, ... festlegt; die aktuelle UI-Kultur dagegen bestimmt die UI-Sprache (Menüs, Fehlermeldungen, ...); Alle unten diskutierten Elemente haben UI-Kultur-Analoga (z. B. Get-UICulture
vs. Get-Culture
, $PSUICulture
vs. $PSCulture
EXCEPT Set-Culture
, für die es kein Analog gibt.
Wechsel in eine andere Kultur :
In .NET Framework v4.6 und höher können Sie jetzt zuweisen für [cultureinfo]::CurrentCulture
(zuvor wurde es gelesen.) nur [1] ; der Beschleuniger [cultureinfo]
PS wurde in PSv3 eingeführt); z.B.:
entspricht (was auch in v4.5 oder niedriger funktioniert, bis mindestens v2):
%Vor%CAVEAT : PowerShell verwendet die -invariante -Kultur in kontextbezogenen Kontexten, unabhängig von der aktuellen Kultur > - Siehe diese Antwort von mir.
Beide Methoden ändern die Kultur für die aktuelle PowerShell-Instanz (Thread) only .
[cultureinfo]::CurrentCulture = 'de-DE'; Get-Date # must be on same line
Für eine dauerhafte Kulturänderung für den aktuellen Benutzer verwenden Sie die Set-Culture
cmdlet , aber wie in mbxs erwähnt hilfreiche Antwort , diese Änderung wird nur für zukünftige PowerShell-Instanzen wirksam, NICHT für die aktuelle.
Kultureinstellungen abfragen:
[cultureinfo]::CurrentCulture
und [System.Threading.Thread]::CurrentThread.CurrentCulture
spiegeln die effektive Kultur der -Einheit der PowerShell-Instanz wider / p>
Im Gegensatz dazu ist das Get-Culture
cmdlet (PSv3 +) und die automatische $PSCulture
Variable (PSv3 +; schreibgeschützt) gibt immer die aktuelle PowerShell-Instanzkultur bei startup Zeit wieder; dh sie spiegeln immer die aktuell konfigurierte Kultur des aktuellen Benutzers zum Zeitpunkt des Starts der aktuellen PowerShell-Instanz wider (unabhängig von instance-only-Änderungen über [cultureinfo]::CurrentCulture = ...
oder zukünftige persistente Änderungen via Set-Culture
in dieser Instanz ausgeführt.)
[1] Siehe Dokumente ; Um festzustellen, ob Sie mindestens v4.6 installiert haben, suchen Sie in der Ausgabe von Version:
nach dem Get-Item 'registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full'
-Wert.
Beachten Sie, dass sich die Version framework von der Version CLR (Runtime) unterscheidet, die von $PSVersionTable.CLRVersion
; zum Beispiel basiert das v4.6 Framework auf der v4.0 CLR - siehe docs .
Tags und Links .net powershell internationalization