如何使用PowerShell脚本远程启动/停止IIS 6.0 / 7.0?

时间:2009-08-31 10:40:54

标签: iis powershell remote-control

我有两台服务器服务器A和服务器B.我想使用Powershell脚本远程从服务器B停止服务器A.

6 个答案:

答案 0 :(得分:14)

最简单的方法之一就是使用PsExec执行命令行。并发送到机器

IISReset / STOP或/ START或/ RESTART

所以你会做这样的事情

PsExec \\Server2 -u Administrator -p somePassword IISReset /STOP

如果你走这条路线或任何涉及某种类型的管理员级帐户模拟的路线,请小心密码管理,以便没有人能够获得管理员密码的纯文本副本。

答案 1 :(得分:11)

选项1:

iisreset remotepcname /restart

选项2:

(Get-Service -ComputerName remotepc -Name 'IISAdmin').stop()

选项3:

Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}

答案 2 :(得分:9)

因为您要求Powershell:

(Get-WmiObject Win32_Service -ComputerName ServerA -Filter "Name='iisadmin'").InvokeMethod("StopService", $null) 

同意将此问题移至ServerFault。

答案 3 :(得分:3)

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

$service = Get-WmiObject -computer 'ServerB' Win32_Service -Filter "Name='IISAdmin'"
$service
$service.InvokeMethod('StopService',$Null)
start-sleep -s 5
$service.InvokeMethod('StartService',$Null)
start-sleep -s 5
$service.State

答案 4 :(得分:2)

在powershell 2.0中,从cmd提示符运行以下命令:

invoke-command -computername <yourremoteservername> -scriptblock {iisreset}

答案 5 :(得分:0)

对于不同版本的IIS v6或v7,您可以将get-wmiobject cmdlt与不同的NameSpace一起使用,下面的pipelining命令可以在本地或远程IIS中用于此类操作

for IIS v6

$srv = "Server Name or IP Address"

$app = "Name of App Pool"

$x = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" -ComputerName $srv -Authentication PacketPrivacy | where-object {$_.Name -eq "W3SVC/AppPools/$app"}

$x.Stop()

$x.Start()

for IIS v7

$srv = "Server Name or IP Address"

$app = "Name of App Pool"

$x = Get-WMIObject -Namespace "root\webAdministration" -Class "ApplicationPool" -ComputerName $srv -Authentication PacketPrivacy | Where-Object {$_.Name -eq $app}

$x.Stop()

$x.Start()

你需要为这些操作提供足够的帐户权限,虽然我更愿意为我的网站执行$ x.Recycle()。