2012-08-01 91 views
2

我有一個服務,我需要安裝有一個命令行,看起來是這樣的:如何在命令行中引用Powershell時在Windows中安裝Windows服務?

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

這是相當多了一個命令行中最糟糕的情況。 我遇到的問題是參數中的雙引號。

這是我已經試過了是接近但不完全:

$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。隨你。

幫助!

回答

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> 
-2

這是我使用的方法。

Installing a service in powershell

+0

你知道在命令行的雙引號是否會得到支持?這篇文章似乎並不表示某種方式。 – 2012-08-01 16:02:04

+0

我不確定試試看,如果它不起作用嘗試一些這樣的事情''$ ServiceName'''應該讓PowerShell把它當作一個字符串 – justinf 2012-08-01 16:07:30

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)

+0

我試過這個,但我似乎無法通過它sc.exe或installutil正確。我已經嘗試過每一種方式,但它沒有出現。 – 2012-08-01 21:49:27

+0

對不起,我想我誤解了你的問題。我添加了一個不同的方式來調用$ FullServicePath。試試這個,看看會發生什麼。在創建變量組合並使用奇怪字符調用變量的變量時,我會做很多工作。 – Nick 2012-08-01 22:27:52

相關問題