Ответ 1
Проблема здесь не в исполняемом файле sc
. Как говорится в сообщении об ошибке, sc
разрешается в Set-Content
. Если вы выполните Get-Alias -Name sc
, вы увидите:
Чтобы обойти псевдоним, используйте полное имя исполняемого файла (включая расширение файла):
PS C:\> sc.exe query wuauserv
SERVICE_NAME: wuauserv
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_PRESHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Возможно, вы захотите использовать оператор -f
при построении аргументов командной строки, чтобы избежать надоедливых -f
кавычек обратных тиков повсюду:
$CmdLine = 'sc.exe create "{0}" binpath= "{1}" displayname= "{2}" ' -f $ServiceName,$TargetPath,$DisplayName
Execute-Command -Command $CmdLine