我想从powershell脚本调用sc create。下面是代码。
function Execute-Command
{
param([string]$Command, [switch]$ShowOutput=$True)
echo $Command
if ($ShowOutput) {
Invoke-Expression $Command
} else {
$out = Invoke-Expression $Command
}
}
$cmd="sc create `"$ServiceName`" binpath=`"$TargetPath`" displayname=`"$DisplayName`" "
Execute-Command -Command:$cmd这会给出以下错误:
Set-Content : A positional parameter cannot be found that accepts argument 'binpath=...'.
At line:1 char:1有什么问题吗?什么是位置参数?
发布于 2015-11-19 00:36:27
这里的问题与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运算符,以避免到处都是那些恼人的引号转义后划线:
$CmdLine = 'sc.exe create "{0}" binpath= "{1}" displayname= "{2}" ' -f $ServiceName,$TargetPath,$DisplayName
Execute-Command -Command $CmdLine发布于 2018-11-29 20:48:40
当在PowerShell和VS代码集成终端上失败时,在一个简单的命令提示符控制台上,这个命令对我来说是有效的。事实上,所有sc命令都必须以管理员身份从命令提示符运行。
sc create MyService binPath= "C:\svc\sampleapp.exe"
sc start MyService发布于 2020-06-11 02:50:56
我知道Mathias的脚本运行得很好,但它可以运行是有原因的,而Gyozo发布的脚本却不能。这与sc.exe中的一个陷阱有关。
在binPath和displayName中,等号后面的空格不是可选的。
对我来说,这段代码不会起作用:
$cmd="sc create `"$ServiceName`" binpath=`"$TargetPath`" displayname=`"$DisplayName`" "然而,这一条将:
$cmd="sc create `"$ServiceName`" binpath= `"$TargetPath`" displayname= `"$DisplayName`" "这个问题每隔一段时间就会不断出现,让我恼火不已,直到我记起这一点。
https://stackoverflow.com/questions/33782385
复制相似问题