试图从带有嵌套引号的PowerShell运行sc create,但无法使其正常工作

时间:2019-05-23 12:53:17

标签: powershell

我试图以编程方式创建一个服务,其中binpath包含嵌套引号,该引号包含空格。

通过命令提示符运行它可以正常工作,但是在Powershell中使用Invoke-Expression失败。我尝试过在这里使用字符串和脚本块,但仍然无法正常工作。

$serviceName = "my service"
$svcBinaryPath = '\"' + $pathToExe + '\" \"' + $parameterWithSpaces + '\"'

$cmd = "sc.exe create $('"' + $serviceName + '"') binpath= $('"' + $svcBinaryPath + '"')"
Invoke-Command $cmd

打印出$cmd并运行命令提示符中显示的内容即可正常工作。

2 个答案:

答案 0 :(得分:0)

您不能只将字符串传递给event,就不需要它,只需以这种方式运行它即可:

Invoke-Command

答案 1 :(得分:0)

请注意,有一个用于创建服务的新服务cmdlet。

PS C:\users\j> get-command -noun service

CommandType     Name                      Version    Source
-----------     ----                      -------    ------
Cmdlet          Get-Service               3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          New-Service               3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Restart-Service           3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Resume-Service            3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Set-Service               3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Service             3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Service              3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Suspend-Service           3.1.0.0    Microsoft.PowerShell.Management