如何在PowerShell中提供路径.exe如果路径依赖于.conf文件



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

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

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

$abcService = "?????"

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

我应该如何使用 -s 将输入提供给配置文件.exe?有什么帮助吗?还是建议?可能是一个小的,但它对我来说很新。

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

这就是我在做的

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

function InstallABCservice(){   
Write-Host "Installing $abcserviceName"
$argList = "/s D:abcabc.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

如果您只是想自动启动带有一些参数的进程; 那么您可以执行以下操作:

$service = "c:pathabc.exe";
$arguments= "/s c:testmyconf.conf"
$proc = Start-Process $service $arguments -WorkingDirectory "D:abc" -ErrorAction SilentlyContinue

如果要注册服务(因此它显示在 services.msc 或 get-services 下),以便可以使用启动服务/停止服务 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 来操作它。

获取服务将为您提供正在运行的服务的状态。

希望这能解释你需要什么;因为你的问题模棱两可

最新更新