如何使用PowerShell脚本远程启动/停止IIS 6.0/7.0?
答
最简单的方法之一就是使用PsExec执行命令行。发送到机器
IISRESET/STOP或/ START或/重启
所以,你会做这样的事
PsExec \\Server2 -u Administrator -p somePassword IISReset /STOP
只是要小心,密码管理,如果你走这条路线或任何涉及某种类型管理员级别帐户模拟的路由,以便任何人都无法获得管理员密码的纯文本副本。
答
因为你问PowerShell的:
(Get-WmiObject Win32_Service -ComputerName ServerA -Filter "Name='iisadmin'").InvokeMethod("StopService", $null)
同意这个问题
应移至ServerFault。
答
$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
答
在的powershell 2.0,运行从CMD提示符下:
invoke-command -computername <yourremoteservername> -scriptblock {iisreset}
答
选项1:
iisreset remotepcname /restart
选项2:
(Get-Service -ComputerName remotepc -Name 'IISAdmin').stop()
选项3:
Invoke-Command -ComputerName remotepc -ScriptBlock {iisreset}
+0
完美答案。谢谢。 – 2013-08-08 20:39:00
答
您可以使用不同的命名空间的不同版本的IIS V6或V7的,下面流水线命令得到-WmiObject可以cmdlt可以在IIS本地或远程
的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()。
我们需要一些关于您的域配置的更多信息。两台服务器是否在同一个域中运行,即单个用户帐户在服务器上具有相同的权限? – 2009-08-31 12:55:22
也应该将这个问题转移到服务器故障。 – 2009-08-31 13:00:42