Я ищу способ запуска / остановки службы на удаленном сервере Windows 2003. Локально я знаю, что команда net работает, но есть ли способ сделать это по сети?
РЕДАКТИРОВАТЬ: если вы хотите сделать это в сценарии, внешние инструменты графического интерфейса не будут работать, если у них нет инструмента командной строки.
Используйте команду «sc.exe» из набора ресурсов Windows Server.
Например, чтобы настроить службу IIS на автозапуск, а затем запустить ее:
sc \\server1 config w3svc start= auto
sc \\server1 start w3svc
Есть бесплатные инструменты sysinternals под названием PsService что позволяет вам просматривать статус, запускать и останавливать службы локально и на других машинах.
Используйте команду sc:
sc [server] [command] [service name]
Вы можете использовать sc
команда.
В принципе:
sc \\server stop wuauserv
sc \\server start wuauserv
Для получения дополнительной информации просто введите sc
в командной строке.
Запустите инструмент администрирования служб на локальном компьютере, щелкните правой кнопкой мыши запись «Службы (локальные)» и подключитесь к удаленному компьютеру.
Это даст вам MMC с полным набором услуг для удаленного компьютера.
Если вы в душе UNIXy и работаете с серверами Windows, делайте то, что делаю я. Установите cygwin, настройте openssh и ssh для использования net start / net stop.
Очевидно, что слово `sc 'упоминалось довольно часто, вот вам альтернатива:
Есть ОТЛИЧНАЯ группа утилит, написанная Марком Руссиновичем, которая называется "PSTools" который имеет такую возможность. В частности, psexec может сделать это за вас.
Еще я нашел в сети этот скрипт Powershell:
####################################################################################
#PoSH script to check if a server is up and if it is check for a service.
#If the service isn't running, start it and send an email
# JK - 7/2009
#Updated: 07/22/09 by Steven Murawski (http://blog.usepowershell.com)
#Changed the ping result comparison to use the .NET Enum
####################################################################################
$erroractionpreference = "SilentlyContinue"
$i = "testserver" #Server Name
$service = "spooler" #Service to monitor
$ping = new-object System.Net.NetworkInformation.Ping
$rslt = $ping.send($i)
if ($rslt.status –eq [System.Net.NetworkInformation.IPStatus]::Success)
{
$b = get-wmiobject win32_service -computername $i -Filter "Name = '$service'"
If ($b.state -eq "stopped")
{
$b.startservice()
$emailFrom = "services@yourdomain.com"
$emailTo = "you@yourdomain.com"
$subject = "$service Service has restarted on $i"
$body = "The $service service on $i has crashed and been restarted"
$smtpServer = "xx.yourdomain.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)
}
}