2

次のようなコマンドラインを持つサービスをインストールする必要があります。

d:\My Service\service.exe /AsService /Config="d:\Config Files\TheConfig.config"

これは、コマンドラインの最悪のシナリオです。私が抱えている問題は、 args の二重引用符にあります。

これは私が試したもので、近いですが完全ではありません:

$cmd = "create ""$ServiceName"" binPath= $FullServicePath start= $StartMethod"
Invoke-Expression "cmd.exe /c sc.exe $cmd" | Write-Host

どこ$FullServicePathにある:

d:\My Service\service.exe /AsService /Config="d:\Config Files\TheConfig.config"

提案?私は何に対してもオープンです。WMI。なんでもいい。

ヘルプ!

4

3 に答える 3

0

$FullServicePath次のように宣言してみてください。

$FullServicePath = "d:\My Service\service.exe /AsService /Config=`"d:\Config Files\TheConfig.config`""

これは、エスケープ文字` を使用して、引用符をテキストとして処理するように指示します。(エスケープ文字は、ほとんどのキーボードで 1 キーの横にあるバックティックです)

次の構文も使用できると思います。

$FullServicePath = $('d:\My Service\service.exe /AsService /Config="d:\Config Files\TheConfig.config"') 

私のシステムでは、どちらも問題なく変数を作成しました。

を呼び出すときは、次の$FullServicePathようにします。$($FullServicePath)

于 2012-08-01T21:24:07.473 に答える
0

引用符が必要であることを 100% 確信している場合は、次のようにエスケープする必要があります\

&'d:\My Service\service.exe' '/AsService' '/Config=\"d:\Config Files\TheConfig.config\"'

Echoargs出力:

Arg 0 is </AsService>
Arg 1 is </Config="d:\Config Files\TheConfig.config">

しかし、おそらくこれも機能し、はるかに簡単です。

&'d:\My Service\service.exe' @('/AsService', '/Config=d:\Config Files\TheConfig.config\')

Echoargs出力:

Arg 0 is </AsService>
Arg 1 is </Config=d:\Config Files\TheConfig.config>
于 2015-02-19T11:17:14.313 に答える
-2

これは私が使用した方法です。

PowerShell にサービスをインストールする

于 2012-08-01T15:52:54.953 に答える