如何执行包含双引号的PowerShell命令

时间:2019-08-14 14:17:36

标签: java powershell

我正在尝试执行PowerShell命令(来自JavaFx)以获得设备驱动程序版本。

我的问题是PS cmdlet中包含一些双引号。

运行命令

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... }

直接在PS中

可以给我带来我期望得到的结果。但是(经过无数次尝试,错误和谷歌搜索之后),我对如何处理cmdlet中包含的双引号感到困惑。

这是嵌入PS cmdlet的JavaFx方法:

"*selectedDeviceName*"

selectedDeviceName部分是我的问题。 {{1}}是一个字符串变量,其中包含我要获取其驱动程序版本的设备的名称。

很高兴获得一些帮助来解决此问题。

提前感谢您的时间和帮助!!!

AvJoe

1 个答案:

答案 0 :(得分:0)

"Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion| where {$_.devicename -like \"" + selectedDeviceName +"\"}"

您可以使用\作为转义符,以在字符串中包含双引号。 输出为:

Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion| where {$_.devicename -like "name of the driver"}