The issue here is not with the sc
executable. As the error states, sc
resolves to Set-Content
. If you issue Get-Alias -Name sc
, you'll see:
To bypass the alias, use the full name of the executable (including the file extension):
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
You might want to use the -f
operator when constructing your command line arguments, to avoid those annoying quote-escaping back ticks all over the place:
$CmdLine = 'sc.exe create "{0}" binpath= "{1}" displayname= "{2}" ' -f $ServiceName,$TargetPath,$DisplayName
Execute-Command -Command $CmdLine
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…