我正在尝试执行PowerShell命令(从JavaFx)以获得设备驱动程序版本。
我的问题是PS cmdlet中包含一些双引号。
运行命令Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion | where {$_.devicename -like "*selectedDeviceName*"}
,
直接在PS中可以得到期望的结果。但是(经过无数次尝试,错误和谷歌搜索之后),我对如何处理cmdlet中包含的双引号感到困惑。
这是嵌入PS cmdlet的JavaFx方法:
public void getDriverVersionViaPowerShell() {
ProcessBuilder psProcessBuilder = new ProcessBuilder("/Windows/System32/WindowsPowerShell/v1.0/powershell.exe",
"Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion| where {$_.devicename -like "*selectedDeviceName*"}");
//some code...
}
"*selectedDeviceName*"
部分是我的问题。 selectedDeviceName
是一个字符串变量,其中包含我要获取其驱动程序版本的设备的名称。我很高兴获得一些帮助来解决此问题。
预先感谢您的时间和帮助!
乔
最佳答案
"Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion| where {$_.devicename -like \"" + selectedDeviceName +"\"}"
您可以使用
\
作为转义符,以在字符串中包含双引号。输出为:
Get-WmiObject Win32_PnPSignedDriver |选择设备名称,驱动程序版本|其中{$ _。devicename -like“驱动程序名称”}