我正在尝试使用 powershell 安装 topshelf 服务,但我真的很难让 powershell 运行安装程序。
Function EnsureTopshelfService([string]$serviceName, [string]$servicePath){
$service = get-service $serviceName -ErrorAction SilentlyContinue
if ($service –ne $null){
"$serviceName is already installed on this server";
}
else{
Write-Host "Installing $serviceName...";
#the problem is here
& "`"$servicepath`" install --sudo"
}
}
当我运行此命令时,我得到以下信息
安装 test... & : 术语 '"c:\A Test\Test.exe" install --sudo' 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 C:\Users\luke.mcgregor\Documents\Test.ps1:11 char:11 + & "
"$servicepath
" install --sudo" + ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: ("c:\A Test\Test.exe" install --sudo:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
在命令提示符下运行"c:\A Test\Test.exe" install --sudo
可以正常工作,因此这是我如何调用现有程序的问题。有谁知道我要去哪里错了?我对powershell很陌生,所以我猜它是一件非常简单的事情。
编辑: 以下是上述的工作示例
Function EnsureTopshelfService([string]$serviceName, [string]$servicePath){
$service = get-service $serviceName -ErrorAction SilentlyContinue
if ($service –ne $null){
"$serviceName is already installed on this server";
}
else{
Write-Host "Installing $serviceName...";
& "$servicepath" install --sudo
}
}