Как удаленно проверять состояние пула веб-приложений с помощью PowerShell?
Я вижу много скриптов для повторного использования пулов приложений на веб-сервере с IIS7, но есть ли способ проверить с помощью PowerShell, что пул веб-приложений запущен или остановлен? Я не могу понять, как удаленно вернуть Get-WebAppPoolState статус в пуле приложений, и мой Google-fu не смог найти замену. Я могу удаленно заставить gwmi работать, перерабатывать или запускать мои пулы приложений, но в идеале я хочу только запустить его, если фактически заблокирован пул приложений.
Должен ли я работать с PSExec или есть альтернатива, которую я могу использовать, подобную gwmi, и иметь одну строку для вызова пула приложений на сервере IIS7 и дать мне статус?
Ответы
Ответ 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)" } }}