不确定是什么意思错了!我在Windows 7上使用Powershell 2.0。如果在Windows XP上使用相同的脚本,我只是缺少一些东西吗?
$server = "server1-vm1.prod.ds.russell.com"
$name = "Superduper_Reports"
$iis = [ADSI]"IIS://$server/W3SVC/AppPools/$name"
$iis.psbase.invoke("recycle")
错误(调用看起来对我好吗?):
Exception calling "Invoke" with "2" argument(s): "Unknown error (0x80005000)"
At line:3 char:19
+ $iis.psbase.invoke <<<< ("recycle")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
刚刚运行$iis
变量时出现此错误:
The following exception occurred while retrieving member "PSComputerName": "Unknown error (0x80005000)"
+ CategoryInfo : NotSpecified: (:) [format-default], ExtendedTypeSystemException
+ FullyQualifiedErrorId : CatchFromBaseGetMember,Microsoft.PowerShell.Commands.FormatDefaultCommand
Roooarr!我宁愿使用ADSI而不是WMI!有帮助吗? :)
答案 0 :(得分:1)
我认为您可以使用WebAdministration
模块
Import-Module WebAdministration
Get-Command -Module WebAdministration
Get-ChildItem IIS:
你会发现很多Cmdlet来管理IIS和一个新的驱动器IIS:
您会在this Microsoft Web site找到一些解释。
答案 1 :(得分:0)
这个question有一个WMI脚本,据说可以使用。
或者ADSI等效看起来像这样......
http://geekswithblogs.net/Lance/archive/2010/12/16/powershell-ndash-recycle-all-iis-app-pools.aspx
function Recycle-AppPools {
param(
[string] $server = "3bhs001",
[int] $mode = 1, # ManagedPipelineModes: 0 = integrated, 1 = classic
)
$iis = [adsi]"IIS://$server/W3SVC/AppPools"
$iis.psbase.children | %{
$pool = [adsi]($_.psbase.path);
if ($pool.AppPoolState -eq 2 -and $pool.ManagedPipelineMode -eq $mode) {
# AppPoolStates: 1 = starting, 2 = started, 3 = stopping, 4 = stopped
$pool.psbase.invoke("recycle")
}
}
}
您无法回收已停止的AppPool,因此您需要检查它。