Программа Powershell Topshelf Uninstall продолжает блокировать файлы - PullRequest
0 голосов
/ 31 октября 2018

Используя следующую команду удаления topshelf:

& $path uninstall -servicename:"MyService" -displayname "MyService"

Кажется, что команда продолжает работать в течение всего срока действия скрипта powershell, в котором она содержится, и блокирует файлы, поэтому я не могу перезаписать их. Есть ли способ гарантировать, что все его действия будут прекращены, чтобы мои сценарии могли работать беспрепятственно?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019
If (Get-Service $serviceName -ErrorAction SilentlyContinue) {
    $servicePath = (Get-WmiObject win32_service | ?{$_.Name -like $serviceName} | Select-Object Name, @{Name="Path"; Expression={$_.PathName.split('"')[1]}}).Path
    Write-Host "Uninstalling service from $servicePath"
    Invoke-Expression "$servicePath uninstall"}
0 голосов
/ 05 ноября 2018

Альтернативный подход к удалению службы Windows. Может использоваться как модуль скрипта .

function Uninstall-WindowsService($serviceName)
{
    $existingService = (Get-WmiObject Win32_Service -filter "name='$serviceName'")
    if ($existingService) 
    {
      Write-Host "Stopping the '$serviceName'."
      Stop-Service $serviceName
      Write-Host "Waiting 3 seconds to allow existing service to stop."
      Start-Sleep -s 3

      $existingService.Delete()
      Write-Host "Waiting 15 seconds to allow service to be uninstalled."
      Start-Sleep -s 15
    }
}
...