首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从powershell脚本调用sc create

如何从powershell脚本调用sc create
EN

Stack Overflow用户
提问于 2015-11-18 22:16:02
回答 3查看 25.6K关注 0票数 25

我想从powershell脚本调用sc create。下面是代码。

代码语言:javascript
复制
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

这会给出以下错误:

代码语言:javascript
复制
Set-Content : A positional parameter cannot be found that accepts argument 'binpath=...'.
At line:1 char:1

有什么问题吗?什么是位置参数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-19 00:36:27

这里的问题与sc可执行文件无关。正如错误所述,sc解析为Set-Content。如果你发出Get-Alias -Name sc命令,你会看到:

要绕过别名,请使用可执行文件的全名(包括文件扩展名):

代码语言:javascript
复制
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运算符,以避免到处都是那些恼人的引号转义后划线:

代码语言:javascript
复制
$CmdLine = 'sc.exe create "{0}" binpath= "{1}" displayname= "{2}" ' -f $ServiceName,$TargetPath,$DisplayName
Execute-Command -Command $CmdLine
票数 70
EN

Stack Overflow用户

发布于 2018-11-29 20:48:40

当在PowerShell和VS代码集成终端上失败时,在一个简单的命令提示符控制台上,这个命令对我来说是有效的。事实上,所有sc命令都必须以管理员身份从命令提示符运行。

代码语言:javascript
复制
sc create MyService binPath= "C:\svc\sampleapp.exe"
sc start MyService
票数 1
EN

Stack Overflow用户

发布于 2020-06-11 02:50:56

我知道Mathias的脚本运行得很好,但它可以运行是有原因的,而Gyozo发布的脚本却不能。这与sc.exe中的一个陷阱有关。

在binPath和displayName中,等号后面的空格不是可选的。

对我来说,这段代码不会起作用:

代码语言:javascript
复制
$cmd="sc create `"$ServiceName`" binpath=`"$TargetPath`" displayname=`"$DisplayName`" "

然而,这一条将:

代码语言:javascript
复制
$cmd="sc create `"$ServiceName`" binpath= `"$TargetPath`" displayname= `"$DisplayName`" "

这个问题每隔一段时间就会不断出现,让我恼火不已,直到我记起这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33782385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档