Как перезапустить IIS
на удаленной машине?
Я знаю IP-адрес и имя пользователя и пароль администратора.
Я использую C#
и ASP.NET 2.0
.
Как перезапустить IIS
на удаленной машине?
Я знаю IP-адрес и имя пользователя и пароль администратора.
Я использую C#
и ASP.NET 2.0
.
Простейшим будет iisreset <servername>
Запустите командную строку как администратор и выполните команду.
Пример. Если именем сервера является SRVAPP, тогда команда будет iisreset SRVAPP
Я пробовал метод PowerShell, но получал следующую ошибку:
Connecting to remote server <TARGET-HOST> failed with the following error message: The WinRM client cannot process the request.
В конце концов я обнаружил, что мне нужно добавить целевой узел в качестве TrustedHosts
в исходном узле и наоборот. Если вы столкнулись с той же проблемой, вы можете исправить ее, открыв командную строку с повышенными привилегиями и введя следующие команды:
С ПК вы будете использовать для выдачи команд:
powershell
winrm set winrm/config/client '@{TrustedHosts="TARGET-HOST"}'
С компьютера назначения (тот, с IIS):
powershell
winrm set winrm/config/client '@{TrustedHosts="SOURCE-HOST"}'
(заменив TARGET-HOST
и SOURCE-HOST
на имена хостов или IP-адреса ваших серверов). Как только вы это сделаете, вы можете выполнить любую удаленную команду PowerShell, например:
IIS Stop:
powershell invoke-command -computername "TARGET-HOST" -scriptblock {iisreset /STOP}
IIS Start:
powershell invoke-command -computername "TARGET-HOST" -scriptblock {iisreset /START}
Перезапуск IIS:
powershell invoke-command -computername "TARGET-HOST" -scriptblock {iisreset /RESTART}
... и больше.
Для обширного обзора этой проблемы вы также можете прочитать этот пост в моем блоге.
Вы можете использовать sc, как предложил Томас Франке:
sc \\RemoteServer stop iisadmin
sc \\RemoteServer start w3svc
или SysInternals psexec. пакет PsTools полезен для этих сценариев.
psexec \\RemoteServer iisreset
Вы можете использовать команду "sc" для управления iis-службой на удаленном компьютере.
sc \\RemoteServer stop [iis-service-name]
Использование
sc help
чтобы получить список возможных аргументов.
Также посмотрите статью microsoft kb на ваш вопрос.
Следующий POSH script позволит вам асинхронно reset набор машин удаленно (очень удобно при работе с большим набором):
$a = Get-Content "c:\OneMachineNamePerLine.txt"
foreach($line in $a)
{
Start-Job -ScriptBlock {
iisreset $line
}
}
Как удаленный пульт удален? Вы можете просто выполнить Shutdown.exe из вашего кода С#? Если это невозможно (брандмауэры и т.д.), То следующим лучшим, вероятно, будет установка службы там, которую вы могли бы назвать удаленно (и надежно!), Которая отключает машину.