So legen Sie die Kultur in PowerShell fest?

8

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?

    
Jader Dias 05.11.2010, 10:56
quelle

5 Antworten

5

Ich denke, das wird funktionieren:

%Vor%

Diese Idee kam von:

Ссылка

    
Jader Dias 05.11.2010, 11:11
quelle
5

Dies ist die Funktion, die ich zum Testen von Zeichenketten / Formaten in anderen Kulturen verwende:

%Vor%     
Keith Hill 05.11.2010 14:30
quelle
4

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.

    
mbx 13.06.2014 12:28
quelle
1

Siehe hier für Details zu ObjectCmdletBase.Culture Eigenschaft.

  

Ruft den Wert der Kultur ab und legt ihn fest   Parameter des abgeleiteten Cmdlet.

    
Steve Townsend 05.11.2010 11:06
quelle
1

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.:

%Vor%

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 .

    • Vorbehalt [behoben in PowerShell Core ab mindestens v6.0.2]: Wie bereits erwähnt, um dies in einer interaktiven PowerShell zu versuchen Sitzung, geben Sie alle Befehle in einer einzelnen Zeile ein, da der kulturändernde Effekt auf eine einzige Befehlszeile beschränkt ist (dies gilt auch für PSv3 +, obwohl Konsolen dort standardmäßig im STA-Modus ausgeführt werden); z. B. um ein deutsches Datum zu drucken:
      [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 .

    
mklement0 02.06.2016 19:49
quelle