【问题标题】:How to give path to .exe in PowerShell if path has dependency on .conf file?如果路径依赖于 .conf 文件,如何在 PowerShell 中提供 .exe 的路径?
【发布时间】:2016-02-26 05:51:53
【问题描述】:

我有一个 Windows 服务正在运行,并且给出了可执行文件的路径(右键单击服务 -> 属性 -> 可执行文件的路径)

"abc.exe" -s "cdf.conf"

我正在尝试使用 powershell 自动安装此服务。我应该如何提供带有 conf 文件的完整服务 .exe?

$abcService = "?????"

$Proc = Start-Process $abcService $exeArgs -WorkingDirectory "D:\abc\" -ErrorAction SilentlyContinue

我应该如何使用 -s 向 .exe 输入配置文件?有什么帮助吗?或建议?可能是次要的,但对我来说完全是新的。

我正在尝试将其作为服务运行。

这就是我正在做的事情

$abcservice = "D:\abc\abc.exe"
$abcserviceName = "abc"



function InstallABCservice(){   
Write-Host "Installing $abcserviceName"
$argList = "/s D:\abc\abc.conf"
$Proc = Start-Process $abcservice $argList -WorkingDirectory "D:\abc\" -ErrorAction SilentlyContinue
Write-Host "Install running under process id $($Proc.Id). Waiting 5 seconds"
Start-Sleep -s 5
if ($Proc -ne $null){
    Stop-Process -Id $Proc.Id -ErrorAction SilentlyContinue
}

Write-Host "Install should be complete. Checking for service $abcservice"
$abcsvc = gwmi win32_service -filter "name='$abcserviceName'"
if ($abcsvc -eq $null) {
    throw "Service $abcserviceName does not exist. The automated install process failed. A manual install will be required"
}
Write-Host "Found service $abcserviceName. Changing startup-type to Disabled"
Set-Service $abcserviceName -startuptype "Disabled"
$abcsvc.change($null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null)
Write-Host "Startup-type changed to Disabled"
Write-Host "Install successfully complete. Service $($abcsvc.DisplayName) installed and startup type set to Disabled"

}

function Main(){        
InstallABCservice

}

Main

【问题讨论】:

  • 试过了,我正在更新我的整个场景

标签: powershell windows-services


【解决方案1】:

如果您只是想通过一些参数自动启动流程;那么您可以执行以下操作:

$service = "c:\path\abc.exe";
$arguments= "/s c:\test\myconf.conf"
$proc = Start-Process $service $arguments -WorkingDirectory "D:\abc\" -ErrorAction SilentlyContinue

如果您希望注册您的服务(因此它显示在 services.msc 或 get-services 下)以便您可以使用 start-service/stop-service cmdlet,那么您需要先注册该服务:

将 exe 注册为服务(Windows):

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>" 

取消注册/卸载服务:

sc delete <servicename>

有关安装/处理服务的更多信息: https://technet.microsoft.com/en-us/library/cc754599.aspx

如果您已将 exe 作为服务安装;你通过get-service、stop-service、start-service和restart-service来操作它。

Get-service 将为您提供正在运行的服务的状态。

希望这能解释您的需求;因为你的问题模棱两可

【讨论】:

  • 我不确定它是否有效,但肯定有帮助,所以这样做后我仍然无法在 services.msc 部分看到我的服务
  • 这是服务还是进程?如果它是已安装的服务(您可以在 services.msc 下看到它),您可以使用 Start-Service 和 Stop-Service 启动和停止它;你不应该使用 Start-Process
  • 您可以使用“Get-service”查看安装了哪些服务。与 start-service 和 stop-service 组合用于启动和停止它们。
  • 更新了我对服务支持和安装的回答,并参考了如何获取、安装和卸载 exe 文件作为服务。
  • 查看我的更新答案,了解如何安装/删除和操作服务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多