如何在PowerShell中设置文化?

Jad*_*ias 10 .net powershell internationalization

是否有任何PowerShell等效于:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Run Code Online (Sandbox Code Playgroud)

?或者如何设置强制所有字符串独立于机器配置服从文化?

Kei*_*ill 6

这是我用于测试其他文化中的字符串/格式的函数:

function Using-Culture (
  [System.Globalization.CultureInfo]
  $culture = (throw "USAGE: Using-Culture -Culture culture -Script {...}"),
  [ScriptBlock]
  $script = (throw "USAGE: Using-Culture -Culture culture -Script {...}"))
{
    $OldCulture = [Threading.Thread]::CurrentThread.CurrentCulture
    $OldUICulture = [Threading.Thread]::CurrentThread.CurrentUICulture    
    try {        
        [Threading.Thread]::CurrentThread.CurrentCulture = $culture        
        [Threading.Thread]::CurrentThread.CurrentUICulture = $culture        
        Invoke-Command $script    
    }    
    finally {        
        [Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture        
        [Threading.Thread]::CurrentThread.CurrentUICulture = $OldUICulture    
    }
}
Run Code Online (Sandbox Code Playgroud)


Jad*_*ias 5

我认为这会奏效:

$currentThread = [System.Threading.Thread]::CurrentThread
$culture = [System.Globalization.CultureInfo]::InvariantCulture
$currentThread.CurrentCulture = $culture
$currentThread.CurrentUICulture = $culture
Run Code Online (Sandbox Code Playgroud)

这个想法来自:

http://blogs.msdn.com/b/powershell/archive/2006/04/25/583235.aspx

  • 是的,在控制台`[threading.thread] :: CurrentThread.ManagedThreadId`上运行几次。 (2认同)

mbx*_*mbx 5

对于WinServer2012和Win8,可以使用Set-Culture。作为Set-Culture集文化对你的用户,你必须从打开另一个PowerShell的实例好处。而且,它不会改变正在运行的ps实例的区域性。当然,您可以在当前实例中启动一个新的Powershell实例。这并不是要求的确切内容,而是紧密相关的。

如果他们将其移植回Win7和Server 2008或使其成为Powershell本身的功能,那将会很整洁。