如何使用PowerShell停止IIS?

时间:2012-05-23 21:04:32

标签: iis powershell

我正在学习PowerShell并尝试在远程服务器上停止IIS。

我正在使用以管理模式启动的PowerGUI脚本编辑器。

我有这段代码

$service = Get-WmiObject Win32_Service -ComputerName 'myserver'  -Filter "Name='IISAdmin'"
$service
$service.StopService();
$service.State
国家总是回来跑步。我不知道为什么它不会停止。

编辑

运行

时出错
Invoke-Command -ComputerName 'myserver' { Stop-Service IISAdmin }
  

连接到远程服务器失败,并显示以下错误消息:   客户端无法连接到请求中指定的目标。   验证目标上的服务是否正在运行   接受请求。请参阅日志和文档   在目标上运行的WS-Management服务,最常见的是IIS或   WinRM的。如果目标是WinRM服务,请运行以下命令   命令在目标上分析和配置WinRM服务:   “winrm quickconfig”。有关更多信息,请参阅   about_Remote_Troubleshooting帮助主题。

EDIT2

我发现了这个,似乎有效。我不知道如何从Stop-Service获取信息,所以我不得不用另一种方式来获取它。如果您知道如何请告诉我。

Stop-Service -Force -InputObject $(Get-Service -Computer myserver -Name IISAdmin)
$service = Get-WmiObject Win32_Service -ComputerName 'myserver '  -Filter "Name='IISAdmin'"
$service.State

这很有效。我不明白为什么。我唯一可以想到的是我必须使用-Force,因为它不会停止服务器,否则也许这是一个原因?

4 个答案:

答案 0 :(得分:7)

您可以使用iisreset远程停止/重启iis:

iisreset [computername]

答案 1 :(得分:5)

停止IIS(例如"右键单击>停止"在iis-Manager中的服务器上):

spsv iisadmin,was,w3svc -pa

表示:

stop-service -name iisadmin,was,w3svc -passThru # -passThru is optional but basically outputs the result

(替代:gsv iisadmin,was,w3svc |spsv -pa|sasv -pa重启服务并输出结果BUT在这个例子中,第二个-pa是可选的!FYI:gsv = get-service,sasv = start-service,spsv = stop -service,pa = passThru)

答案 2 :(得分:4)

Invoke-Command -ComputerName myserver { Stop-Service W3SVC}

答案 3 :(得分:2)

尝试使用PsExec \ Server2 -u管理员-p somePassword IISReset / STOP

或使用PowerGUI脚本编辑器

$service = Get-WmiObject -computer 'ServerA' Win32_Service -Filter "Name='IISAdmin'"
$service
$service.InvokeMethod('StopService',$Null)
$service.State

尝试使用

$server = "servername"
$siteName = "Default Web Site"
$iis = [ADSI]"IIS://$server/W3SVC"
$site = $iis.psbase.children | where { $_.keyType -eq "IIsWebServer" -AND
$_.ServerComment -eq $siteName }
$site.serverstate=3
$site.setinfo()