Вопрос Как я могу удаленно установить или удалить службу в Windows Server 2008 R2?


Кто знает простое решение по установке или удалению службы Windows удаленно на сервере Win2k8R2?

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

Я бы предпочел возможность, когда я могу инициировать выполнение серверного скрипта, который устанавливает уже загруженные служебные двоичные файлы.

Если вы знаете, как это сделать, вы можете назвать любые инструменты или решения .NET.

Редактировать: Извините, я должен немного разъяснить, это не так просто, как использование powershell или сценариев с InstallUtil в моем случае. Я попробую с пулями:

  • Я хочу установить службу без участия пользователя, вызвав установку сервиса на сервере, работающем в Интернете, с клиента.
  • У меня нет графического интерфейса с сервера при вызове установки службы. Например, я запускаю setup.exe, который устанавливает сами службы через SSH (самонастраивающийся сервис, чтобы использовать пользовательские имена служб). Не иметь GUI, кажется, проблема (?).

Я даже отчаянно пытался вызвать программу установки службы через веб-службу php (shell_exec), но результат всегда один и тот же: выполняется установка, но службы не установлены.

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


2
2017-09-20 14:42


происхождения


Это звучит как вопрос программирования, возможно, он должен быть на stackoverflow вместо суперпользователя? - Harry Johnston
Является ли установщик (setup.exe) вашим собственным кодом? - Harry Johnston
Его собственный инсталлятор, да, и здесь, в суперпользователе, я на самом деле ищут не-программирующий ответ (хотя я мог бы справиться и с этим);). Я вполне уверен, что можно удаленно установить службу Windows на интернет-хост без присмотра. Или доказать, что я не прав;) - derFunk
Однако из того, что вы сказали, проблема заключается в том, что ваш setup.exe не работает должным образом при вызове удаленно. Устранение этой проблемы будет вопросом программирования. Если вы ищете существующее решение, я не понимаю, что вы хотите от этого решения, кроме запуска setup.exe, который вы уже пробовали. - Harry Johnston
Установщик не делает ничего, кроме того, что можно сделать с помощью командной строки. Так что забудьте setup.exe. Мой самый насущный вопрос: есть ли Любые способ удаленной установки службы Windows на компьютере с сервером Win2k8, работающем в Интернете? - derFunk


ответы:


Недавно я использовал PowerShell и WMI. Полная информация Вот но в двух словах что-то вроде ниже работает, а также PowerShell удален или SC.exe

function Install-Service(
[string]$serviceName = $(throw "serviceName is required"),
[string]$targetServer = $(throw "targetServer is required"),
[string]$displayName = $(throw "displayName is required"),
[string]$physicalPath = $(throw "physicalPath is required"),
[string]$userName = $(throw "userName is required"),
[string]$password = "",
[string]$startMode = "Automatic",
[string]$description = "",
[bool]$interactWithDesktop = $false
)
{        
# todo: cleanup this section
$serviceType = 16          # OwnProcess
$serviceErrorControl = 1   # UserNotified
$loadOrderGroup = $null
$loadOrderGroupDepend = $null
$dependencies = $null

# description?
$params = `
    $serviceName, `
    $displayName, `
    $physicalPath, `
    $serviceType, `
    $serviceErrorControl, `
    $startMode, `
    $interactWithDesktop, `
    $userName, `
    $password, `
    $loadOrderGroup, `
    $loadOrderGroupDepend, `
    $dependencies `

$scope = new-object System.Management.ManagementScope("\\$targetServer\root\cimv2", `
    (new-object System.Management.ConnectionOptions))
"Connecting to $targetServer"
$scope.Connect()
$mgt = new-object System.Management.ManagementClass($scope, `
    (new-object System.Management.ManagementPath("Win32_Service")), `
    (new-object System.Management.ObjectGetOptions))

$op = "service $serviceName ($physicalPath) on $targetServer"   
"Installing $op"
$result = $mgt.InvokeMethod("Create", $params)   
Test-ServiceResult -operation "Install $op" -result $result
"Installed $op"

"Setting $serviceName description to '$description'"
Set-Service -ComputerName $targetServer -Name $serviceName -Description $description
"Service install complete"
}

2
2018-03-23 14:36





Powershell кажется вероятным вариантом. Взгляните на ссылка командлета и Надстройка WindowsFeature командлет


2
2017-09-20 15:55



Powershell - это путь будущего. Даже Microsoft начала создавать все свои диагностические инструменты поверх Powershell. - surfasb
Его серверная машина, работающая в Интернете, я бы не открывала для пользователей услуг обмена файлами Windows. Является ли powershell по-прежнему вариантом? Кто-то действительно пытался удаленно устанавливать услуга на интернет-сервере? (возможен каждый туннель). - derFunk
Служба удаленного доступа Powershell v2 работает по ssh-подобному соединению. - uSlackr