Проверьте, существует ли служба Windows, и удалите в PowerShell. - PullRequest
135 голосов
/ 11 февраля 2011

В настоящее время я пишу сценарий развертывания, который устанавливает ряд служб Windows.

Имена служб версионированы, поэтому я хочу удалить предыдущую версию службы Windows в рамках установки новой службы.

Как мне лучше всего это сделать в PowerShell?

Ответы [ 14 ]

3 голосов
/ 25 октября 2014

Чтобы проверить, существует ли служба Windows с именем MySuperServiceVersion1, даже если вы не уверены в ее точном названии, вы можете использовать подстановочный знак, используя подстроку так:

 if (Get-Service -Name "*SuperService*" -ErrorAction SilentlyContinue)
{
    # do something
}
2 голосов
/ 02 марта 2018
  • Для версий PowerShell до v6 вы можете сделать это:

    Stop-Service 'YourServiceName'; Get-CimInstance -ClassName Win32_Service -Filter "Name='YourServiceName'" | Remove-CimInstance
    
  • Для v6 + вы можете использовать командлет Remove-Service .

Обратите внимание, что начиная с Windows PowerShell 3.0, командлет Get-WmiObject был заменен Get-CimInstance.

2 голосов
/ 30 апреля 2014

Адаптировано для ввода списка серверов, указания имени хоста и получения полезного вывода

            $name = "<ServiceName>"
            $servers = Get-content servers.txt

            function Confirm-WindowsServiceExists($name)
            {   
                if (Get-Service -Name $name -Computername $server -ErrorAction Continue)
                {
                    Write-Host "$name Exists on $server"
                    return $true
                }
                    Write-Host "$name does not exist on $server"
                    return $false
            }

            function Remove-WindowsServiceIfItExists($name)
            {   
                $exists = Confirm-WindowsServiceExists $name
                if ($exists)
                {    
                    Write-host "Removing Service $name from $server"
                    sc.exe \\$server delete $name
                }       
            }

            ForEach ($server in $servers) {Remove-WindowsServiceIfItExists($name)}
1 голос
/ 10 ноября 2017

Windows Powershell 6 будет иметь Remove-Service командлет. На данный момент релиз Github показывает PS v6 beta-9

Источник: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-service?view=powershell-6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...