PowerShell 优化本地化数据 1


像driverquery,whoami,或者tasklist这些windows中许多内置的工具可以提供很多有用的信息,但是这些属性的列名会根据机器的用户的语言设置被本地化。这些本地化的列名可能会影响某些脚本在多种语言系统上正常运行。

所以访问这些列名最好的方式是通过索引去访问,而不是名称。要达到这个效果,须要根据PSObject找出本地化的名称,以及这些本地化名称所对应的索引。

下面的命令会列出系统属性,这些系统属性的名称也已经被本地化。

PS D:\> systeminfo /FO CSV | ConvertFrom-Csv | Out-GridView

通过GridView”挑选OS名称”,”产品ID”,“初始安装日期”,“系统型号”,与之对应的列名为1,8,9和12

PS D:\> $data = @(systeminfo /FO CSV | ConvertFrom-Csv)
PS D:\> [string[]]$columns = $data[0].PSObject.Properties | Where-Object { $_.MemberType -eq 'NoteProperty' } | Select-Object -ExpandProperty Name
PS D:\> $data | Select-Object -Property $columns[1,8,9,12]

OS 名称                                   产品 ID                                   初始安装日期                              系统型号
-------                                   -------                                   ------------                              --------
Microsoft Windows 7 旗舰版                xxxx-xxx-xxxx-xxxxxx                   2012/2/11, 15:40:06                       20090

同样上面的代码,在英文语言的机器上的运行结果,如下。方便大家对比,这样就简单避免了本地化对属性列的负面影响。

OS Name                        Product ID              Original Install Date System Model
-------                        ----------              --------------------- ------------
Microsoft Windows 8 Enterprise xxxxx-xxxxx-xxxx-xxxx 9/14/2012, 8:22:53 PM HP Compaq 6280 Pro MT PC

原文链接:http://powershell.com/cs/blogs/tips/archive/2012/10/05/normalizing-localized-data.aspx

×用微信扫描并分享
本文链接: https://www.pstips.net/powershell-normalizing-localized-data.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

一条评论 “PowerShell 优化本地化数据

  • xcvjss

    牛人你好,你研究的不错,让我收益非浅~~
    欢迎入群,共同交流,

    # pwershell交流群出品
    # 群号=183173532

    要是愿意,到群里喊1嗓子,你的网站名,我就知道了。