2011-12-06 117 views
1

我试图按如下方式从Power-shell安装Windows服务。将参数传递给Powershell中的InstallUtil

$sn = """" + $serviceName + " " + $exeName + """" 
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i /ServiceName=[$sn] $exeFilePath 

我收到以下异常。

Microsoft (R) .NET Framework Installation utility Version 2.0.50727.3053 
Copyright (c) Microsoft Corporation. All rights reserved. 

Exception occurred while initializing the installation: 
System.IO.FileNotFoundException: Could not load file or assembly 'file:///E:\Scheduled' or one of its dependencies. The system cannot f 
ind the file specified.. 

但下面的命令工作。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i /ServiceName=["Scheduled Download Service"] $exeFilePath 

我想安装带有动态名称的Windows服务,并使用Power-shell传递服务名称。任何帮助表示赞赏。

答案是VS 2008正确的,但由于InstallUtil被修改,在2012年VS将会失败。

您应该使用 $sn = """" + $serviceName + " " + $exeName + """"

的原因是,InstallUtil(2.0)会自动添加引号,所以我们应该忽略它们(如答案)。但InstallUtil(4),如果字符串在任何位置包含引号(这是一个错误? - 它们应该检查在字符串的开头和结尾是否有引号 - 目前这会打破所有2.0代码),这会被跳过。

Reflecter是你的朋友。

回答

3

您的问题是在这条线:

$sn = """" + $serviceName + " " + $exeName + """" 

如果你将简单的东西取代它,或者像这样做:

$sn = $serviceName.ToString() + " " + $exeName 

它将工作

+0

谢谢。它的工作..然而,服务名称安装为[预定下载服务]。我期望预定的下载服务。 – Vivasaayi

+0

仍是[预定下载服务]。 – Vivasaayi

+0

预定下载服务 – Vivasaayi

相关问题