像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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
牛人你好,你研究的不错,让我收益非浅~~
欢迎入群,共同交流,
# pwershell交流群出品
# 群号=183173532
要是愿意,到群里喊1嗓子,你的网站名,我就知道了。