2010-04-25 30 views
41

我在Windows 7开发机器上的IIS7中配置了多个站点,以便在同一端口上运行,并且通常每次只运行一个站点,具体取决于我所从事的工作。我希望能够从PowerShell启动和停止我的开发站点,而不是打开IIS管理器。有没有人有一个很好的资源指向我正确的方向或脚本已经完成了这一点?如何使用PowerShell在IIS中停止和启动单个网站?

+0

可能有WMI IIS网站的类。 – zneak 2010-04-25 22:14:51

+0

我想我会通过提供以下链接来回答我自己的问题。 http://technet.microsoft.com/en-us/library/ee790599.aspx – 2010-04-25 22:19:10

回答

74

只是为了未来的快速参考,命令是:

Import-Module WebAdministration 
Stop-WebSite 'Default Web Site' 
Start-WebSite 'Default Web Site' 
+1

我是一个完整的PowerShell noob。我需要在您发布的代码之前导入任何内容吗?我尝试的是启动PowerShell,然后键入您发布的第一个cmd,PowerShell抛出一个错误。 – 2010-04-29 03:02:53

+1

阅读例外后,它说我不需要导入Web管理,但接下来它告诉我,Start-Website'SiteName'不是公认的cmdlet。 – 2010-04-29 03:04:30

+0

你从哪里得到模块? – cpoDesign 2013-09-26 10:48:55

2

要访问系统模块,Powershell的需要是这样运行的:

[path]\powershell.exe -NoExit -ImportSystemModules 

我发现上面的这个iis forum

10

添加到Keith的答案,您可以使用Invoke-Command远程执行此操作。

Import-Module WebAdministration 
$siteName = "Default Web Site" 
$serverName = "name" 
$block = {Stop-WebSite $args[0]; Start-WebSite $args[0]}; 
$session = New-PSSession -ComputerName $serverName 
Invoke-Command -Session $session -ScriptBlock $block -ArgumentList $siteName 
+0

完美的作品! – hdoghmen 2017-07-13 13:03:09

+0

它的工作原理,但有人可以解释$ args [0]部分? Thx – ToastMan 2017-12-13 15:31:58

+0

@ToastMan $ args是脚本块输入参数数组。 [文件为$ args和其他自动变量](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-5.1) – Tim 2017-12-14 01:33:33

1

我发现下面的远程服务器上停止单个网站的工作:

Invoke-Command -Computername $servername -Scriptblock { 
    (Import-Module WebAdministration); 
    Stop-Website -Name "WebsiteName"; 
    Stop-Website -Name "AnotherWebsiteName" 
} 

我有一些错误的上面,直到Import-Module放入()

+0

太棒了。它很棒!我自己测试了确切的代码,没有括号,它不工作,很棒的发现! – ToastMan 2017-12-13 15:33:39

相关问题