2010-07-14 3 views
2

Не знаете, что означает «эфф»! Я использую Powershell 2.0 в Windows 7. Если бы тот же самый скрипт работал в Windows XP, я просто что-то пропустил?Перезапуск пула приложений IIS6 - ошибка ADSI

$server = "server1-vm1.prod.ds.russell.com" 
$name = "Superduper_Reports" 
$iis = [ADSI]"IIS://$server/W3SVC/AppPools/$name" 
$iis.psbase.invoke("recycle") 

Ошибка (что Invoke выглядит хорошо для меня?):

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! Любая помощь? :)

ответ

1

Я думаю, что вы можете использовать WebAdministration модуль для этого

Import-Module WebAdministration 
Get-Command -Module WebAdministration 
Get-ChildItem IIS: 

Вы найдете много командлетов для администратора IIS и новый диск IIS:

Вы найдете на this Microsoft Web site некоторых объяснениях ,

+0

Спасибо! Не могли бы вы отменить опечатку в своем фрагменте? добавьте d в Get-ChildItem IIS: –

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 однако, так что вы должны проверить это.