Попытка запустить sc create из PowerShell с вложенными кавычками и не может заставить его работать - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь программно создать службу, в которой binpath содержит вложенные кавычки для параметра, содержащего пробелы.

Запуск его через командную строку работает нормально, но в PowerShell происходит сбой с помощью Invoke-Expression.Я попытался поиграть со строками и скриптовыми блоками, но все еще не могу заставить его работать.

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

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

Распечатка $cmd и запуск того, что отображается в командной строке, работает нормально.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Обратите внимание, что существует командлет new-service для создания служб.

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
0 голосов
/ 23 мая 2019

Вы не можете просто передать строку в Invoke-Command, и она вам не нужна, просто запустите ее следующим образом:

$serviceName = "my service"
$scvBinaryPath = '\"' + $pathToExe + '\" \"' + $parameterWithSpaces + '\"'
sc.exe create $serviceName binpath= $svbBinaryPath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...