【发布时间】:2019-05-23 21:46:53
【问题描述】:
如何在远程机器上重启IIS?
我知道 IP 地址和管理员用户的用户名和密码信息。
我正在使用C# 和ASP .NET 2.0。
【问题讨论】:
标签: iis
如何在远程机器上重启IIS?
我知道 IP 地址和管理员用户的用户名和密码信息。
我正在使用C# 和ASP .NET 2.0。
【问题讨论】:
标签: iis
最简单的就是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,反之亦然。如果您遇到同样的问题,您可以通过打开提升的 命令提示符 并输入以下命令来解决它:
从您将用来发出命令的 PC:
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 停止:
powershell invoke-command -computername "TARGET-HOST" -scriptblock {iisreset /STOP}
IIS 启动:
powershell invoke-command -computername "TARGET-HOST" -scriptblock {iisreset /START}
IIS 重启:
powershell invoke-command -computername "TARGET-HOST" -scriptblock {iisreset /RESTART}
...等等。
如需对此问题的广泛评论,您也可以在我的博客上read this post。
【讨论】:
您可以按照 Thomas Franke 的建议使用 sc:
sc \\RemoteServer stop iisadmin
sc \\RemoteServer start w3svc
或 SysInternals 的psexec。 PsTools suite 对于这些场景很有用。
psexec \\RemoteServer iisreset
【讨论】:
您可以使用“sc”命令来控制远程机器上的 iis 服务。
sc \\RemoteServer stop [iis-service-name]
使用
sc help
为了获得可能的参数列表。
【讨论】:
以下 POSH 脚本将允许您远程异步重置一组机器(在处理大量机器时非常方便):
$a = Get-Content "c:\OneMachineNamePerLine.txt"
foreach($line in $a)
{
Start-Job -ScriptBlock {
iisreset $line
}
}
【讨论】:
远程有多远?您可以从您的 c# 代码中执行 Shutdown.exe 吗?如果这是不可能的(防火墙等),那么下一个最好的方法可能是在那里放置一个服务,您可以远程(并且安全地!)调用它来关闭机器。
【讨论】: