我试图以编程方式创建一个服务,其中binpath包含嵌套引号,该引号包含空格。
通过命令提示符运行它可以正常工作,但是在Powershell中使用Invoke-Expression失败。我尝试过在这里使用字符串和脚本块,但仍然无法正常工作。
$serviceName = "my service"
$svcBinaryPath = '\"' + $pathToExe + '\" \"' + $parameterWithSpaces + '\"'
$cmd = "sc.exe create $('"' + $serviceName + '"') binpath= $('"' + $svcBinaryPath + '"')"
Invoke-Command $cmd
打印出$cmd
并运行命令提示符中显示的内容即可正常工作。
答案 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