Sunday, 28 February 2010

Using-Culture.ps1

  1. <# 
  2. .SYNOPSIS 
  3.     This script creates a function to run culture sensitive operations
  4.     in some other culture. 
  5. .DESCRIPTION 
  6.     The Using-Culture function gets the current culture, saves it, then
  7.     runs the script block in the requested culture. The function then
  8.     restores the culture.  The script then ends with calls to
  9.     Using-Culture to demonstrate its use.
  10.  
  11.     The script is based on a blog note at: http://blogs.msdn.com/powershell/archive/2006/04/25/583235.aspx. 
  12. .NOTES 
  13.     File Name  : Using-Culture.ps1 
  14.     Author     : Thomas Lee - tfl@psp.co.uk 
  15.     Requires   : PowerShell Version 2.0 
  16. .LINK 
  17.     This script posted to: 
  18.         http://pshscripts.blogspot.com/2010/02/using-cultureps1.html
  19. .EXAMPLE 
  20.     run the script and see! 
  21. #> 
  22.  
  23. # Defind the Using-Culture function 
  24. Function Using-Culture { 
  25. Param ( 
  26. [System.Globalization.CultureInfo]$culture = (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}"), 
  27. [ScriptBlock]$script= (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}") 
  28. ) 
  29.     $OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture 
  30.     trap  
  31.     { 
  32.         [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture 
  33.     } 
  34.     [System.Threading.Thread]::CurrentThread.CurrentCulture = $culture 
  35.     Invoke-Command $script 
  36.     [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture 
  37. } 
  38. ## 
  39. # Now use the function 
  40. ## 
  41.  
  42. # Here is an example of Using-Culture 
  43. "Get-Date using ar-IQ" 
  44. using-culture ar-IQ {get-date} 
  45. "" 
  46. # Parse ar-IQ formatted date into local culture 
  47. "Parse IQ date to English and display" 
  48. $IQD = "30 تشرين الثاني, 2005 09:01:38 ص" 
  49. using-culture ar-IQ {$global:d=[DateTIme]::Parse($IQD)} 
  50. $IQD 
  51. $d 
  52. "" 
  53. # Now do it in German 
  54. "Get-Date using de-de" 
  55. using-culture de-de {get-date} 
  56. "" 
  57. "Parsing a german date into local" 
  58. $ded="Mittwoch, 30. November 2005 09:02:29" 
  59. using-culture de-de {$global:d=[DateTIme]::Parse($DED)} 
  60. $ded 
  61. $d 

No comments: