正在尝试使用嵌套引号和can';从PowerShell运行sc create;我不能让它工作

正在尝试使用嵌套引号和can';从PowerShell运行sc create;我不能让它工作,powershell,Powershell,我试图以编程方式创建一个服务,其中binpath包含包含空格的参数的嵌套引号 通过命令提示符运行它工作正常,但在powershell中使用调用表达式失败。我尝试过在这里使用字符串和脚本块,但仍然无法使其工作 $serviceName = "my service" $svcBinaryPath = '\"' + $pathToExe + '\" \"' + $parameterWithSpaces + '\"' $cmd = "sc.exe create $('"' + $serviceName

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

通过命令提示符运行它工作正常,但在powershell中使用调用表达式失败。我尝试过在这里使用字符串和脚本块,但仍然无法使其工作

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

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

打印出
$cmd
并运行命令提示符中显示的内容很好。

您不能只将字符串传递给
调用命令
,您也不需要它,只需按以下方式运行它:

$serviceName = "my service"
$scvBinaryPath = '\"' + $pathToExe + '\" \"' + $parameterWithSpaces + '\"'
sc.exe create $serviceName binpath= $svbBinaryPath

您不能只将字符串传递给
Invoke命令
,也不需要它,只需按以下方式运行它:

$serviceName = "my service"
$scvBinaryPath = '\"' + $pathToExe + '\" \"' + $parameterWithSpaces + '\"'
sc.exe create $serviceName binpath= $svbBinaryPath

请注意,有一个新的service 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

请注意,有一个新的service 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

这里根本不需要调用命令
sc.exe创建“$serviceName”binpath=“$svcBinaryPath”
应该可以。您根本不需要在此处调用命令
sc.exe创建“$serviceName”binpath=“$svcBinaryPath”
应该可以。