【发布时间】:2015-11-28 16:44:20
【问题描述】:
我正在使用 (gwmi Win32_OperatingSystem).Name 来获取操作系统版本,因此配置脚本可以根据该版本选择适当的变量文件。但是,我想尽可能具体。我想将操作系统版本限制为仅操作系统编号(即 Windows 7 为 7、Windows 8 为 8、Windows Server 2012 为 2012 等)。这是我目前所拥有的:
(gwmi Win32_OperatingSystem).Name
产生:
Microsoft Windows 10 Pro|C:\WINDOWS|\Device\Harddisk0\Partition4
当我尝试将其限制为数字时:
(gwmi Win32_OperatingSystem).Name -replace '\D+(\d+)\D+','$1'
我明白了:
100\Partition4
我需要输出为“10”。如何调整我的正则表达式语句以仅选择 10(或 7 或 2012)?我想过以某种方式限制正则表达式在第一次遇到数字块之后停止处理字符串(即点击一个数字,然后在你点击一个空格时停止),但我不知道如何做这样的事情。或者也许有更好的方法来获取我需要的信息?
提前致谢。
【问题讨论】:
-
如何分割空间并在数组中获取正确的项目?
((gwmi win32_operatingsystem).name).split(" ")[2] -
Lieven,效果很好,而且非常简单。如果您不介意我问,[2] 完成了什么?如果您将此作为答案发布,我会相应地标记它。
-
拆分将字符串变成一个数组(去掉[2])查看全部内容。 [2] 只是数组中的索引。不确定是否将其发布为答案,因为我不确定这对于每个版本的 Windows 来说都是万无一失的。
-
你是对的。它适用于 7、8 和 10,但在 2012 年返回“服务器”。仍然是一个很好的答案,所以谢谢你的解释。
标签: regex powershell wmi