我对powershell很陌生,但我已经做了很多批处理脚本(对于进入'现在!')。我试图将我在批处理脚本中的最大成就重新写入powershell,然后我立刻就打了一个墙。
我的原始批处理脚本所做的是为所有检测到的系统硬件安装驱动程序。它通过运行devcon.exe并对输出进行搜索来查找VEN_& DEV_并尝试将其与比较匹配。这在较慢的计算机上耗费了一些时间(i3 / Atom / slow AMD)。
我在powershell中偶然发现了这个命令: get-wmiobject -class CIM_VideoController PNPDeviceID
它会显示一个列表,其中只包含显示适配器上的几个信息。我特别喜欢的是PNPDeviceID。到目前为止,我还没有找到一种方法来管理输出以列出VEN_数字。 这就是我想要做的事情:运行上面的命令,操作它,这样我只将供应商编号放入一个变量,将设备编号放入另一个变量中。 我试过这样做:
get-wmiobject -class CIM_VideoController PNPDeviceID | Select-String -Pattern "PNPDeviceID" -SimpleMatch
我遇到的问题是,它根本没有吐出任何东西。我也不知道如何操纵该行的输出,进一步只给出了' VEN _'的4位数字标识符。或者' DEV _'。
有人知道怎么做吗?
答案 0 :(得分:0)
你可以这样做:
$deviceID = (get-wmiobject -class CIM_VideoController).PNPDeviceID
此类对象的输出总是存储在您可以通过点符号
访问的属性中答案 1 :(得分:0)
我的意思是没有不尊重,但这是非常基本的东西。您是否考虑过查找一本书(甚至是在线书)并阅读PowerShell?我在一个月的午餐中听说过学习PowerShell的好东西。
至于您的请求,要获取四位数ID,您可以将该属性的值传递给正则表达式匹配,然后输出该匹配项。可以这样做:
$VidCardID = get-wmiobject -class CIM_VideoController PNPDeviceID | Where{$_.PNPDeviceID -match "VEN_(\d{4})"} | ForEach{$Matches[1]}
这会将$VidCardID
设置为视频卡的4位数ID。