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


2

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

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

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

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

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

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

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

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


Это звучит как вопрос программирования, возможно, он должен быть в стеке, а не в суперпользователе?
— Гарри Джонстон

Является ли программа установки (setup.exe) вашим собственным кодом?
— Гарри Джонстон

Это наш собственный установщик, да, и здесь, в суперпользователе, я на самом деле ищу не-программный ответ (хотя я мог бы справиться и с этим;)). Я совершенно уверен, что возможно удаленно установить службу Windows на хосте без присмотра. Или докажите, что я не прав;)
— derFunk

Однако из того, что вы сказали, проблема в том, что ваш setup.exe не работает должным образом при удаленном вызове. Исправление этой проблемы было бы вопросом программирования. Если вы ищете существующее решение, я не понимаю, что вы хотите от этого решения, кроме запуска setup.exe, который вы уже попробовали.
— Гарри Джонстон

Установщик не делает ничего, кроме того, что можно сделать из командной строки. Так что забудьте про setup.exe. Мой самый неотложный вопрос: есть ли способ удаленной установки службы Windows на компьютере с Win2k8 Server, работающем в Интернете?
— derFunk

Ответы:


2

Я сделал это недавно, используя PowerShell и WMI. Полная информация здесь, но в двух словах работает что-то вроде ниже, а также PowerShell Remoting или 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

Powershell кажется вероятным вариантом. Посмотрите на ссылки командлетов и Add-WindowsFeature Командлет


Powershell - это путь будущего. Даже Microsoft начала создавать все свои диагностические инструменты поверх Powershell.
— Surfasb

Это серверная машина, работающая в Интернете, я бы не стал открывать здесь сервисы общего доступа к файлам Windows. PowerShell еще вариант? Кто-нибудь уже пытался удаленно установить службу на интернет-сервере? (возможен каждый туннель мыслимый).
— derFunk

Служба удаленного взаимодействия Powershell v2 работает по ssh-подобному соединению.
— uSlackr
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.