Подтвердить что ты не робот

Как удаленно проверять состояние пула веб-приложений с помощью PowerShell?

Я вижу много скриптов для повторного использования пулов приложений на веб-сервере с IIS7, но есть ли способ проверить с помощью PowerShell, что пул веб-приложений запущен или остановлен? Я не могу понять, как удаленно вернуть Get-WebAppPoolState статус в пуле приложений, и мой Google-fu не смог найти замену. Я могу удаленно заставить gwmi работать, перерабатывать или запускать мои пулы приложений, но в идеале я хочу только запустить его, если фактически заблокирован пул приложений.

Должен ли я работать с PSExec или есть альтернатива, которую я могу использовать, подобную gwmi, и иметь одну строку для вызова пула приложений на сервере IIS7 и дать мне статус?

4b9b3361

Ответ 1

Вы можете использовать Invoke-Command для вызова командлета Get-WebAppPoolState на удаленном компьютере.

$appPoolStatus = Invoke-Command -ComputerName RemoteHostName {Import-Module WebAdministration; Get-WebAppPoolState DefaultAppPool}
$appPoolStatus.Value

Обратите внимание, что если вы собираетесь использовать переменные, определенные локально на вызывающей машине, вам придется обрабатывать их в соответствии с правилами. Эта ссылка - отличная статья, объясняющая их:

http://blogs.msdn.com/b/powershell/archive/2009/12/29/arguments-for-remote-commands.aspx

Пример:

$appPoolName = "SomeAppPoolName"
$appPoolStatus = Invoke-Command -ComputerName RemoteHostName { param($apn) Import-Module WebAdministration; Get-WebAppPoolState $apn} -Args $appPoolName

Ответ 2

Вы можете использовать это, если хотите довольно красиво:

Invoke-Command -ComputerName RemoteHostName -ScriptBlock { Get-WebAppPoolState | % {  return  @{($_.itemxpath -split ("'"))[1]="$($_.value)" } }}