Я хочу получить информацию о пулах приложений IIS с другого сервера.
Это должно быть возможно с помощью Invoke-Command.Но есть поведение, которое я не понимаю ...
Когда я выполняю на локальной машине, блок скрипта выглядит следующим образом:
# get the values recorded under Recycle
$ConfigSection = Get-IISConfigSection -SectionPath "system.applicationHost/applicationPools"
$SitesCollection = Get-IISConfigCollection -ConfigElement $ConfigSection
$Site = Get-IISConfigCollectionElement -ConfigCollection $SitesCollection -ConfigAttribute @{"name" = "$AppPool"}
$recycling = Get-IISConfigElement -ConfigElement $Site -ChildElementName "recycling"
$flags = $recycling.Attributes["logEventOnRecycle"].Value
$onRecycle = @{
'Time' = [bool]($flags -band 1) # Specific Time
'Requests' = [bool]($flags -band 2) # Request Limit Exceeded
'Schedule' = [bool]($flags -band 4) # Regular Time Interval
'Memory' = [bool]($flags -band 8) # Virtual Memory Limit Exceeded
'IsapiUnhealthy' = [bool]($flags -band 16) # Isapi Reported Unhealthy
'OnDemand' = [bool]($flags -band 32) # Manual Recycle
'ConfigChange' = [bool]($flags -band 64) # Application Pool Configuration Changed
'PrivateMemory' = [bool]($flags -band 128) # Private Memory Limit Exceeded
}
Это работает, я могу использовать это как "$onRecycle.Time"
...
Но нет, я хочу получить информацию с удаленного компьютера.
Моей первой мыслью было просто обернуть все это в переменную $ command.Конечно, это не сработало. Он генерирует следующие ошибки:
Тогда я думал, что плохо сделаю это шаг за шагом.Начиная с:
$s = "chvmes01"
$command1 = { Get-IISConfigSection -SectionPath "system.applicationHost/applicationPools" }
$ConfigSection = Invoke-Command -ComputerName $s -ScriptBlock $command1
Это работает и получает необходимую информацию, но уже на следующем шаге снова возникают проблемы:
$command2 = { param($ConfigSection)(Get-IISConfigCollection -ConfigElement $ConfigSection) }
$SitesCollection = Invoke-Command -ComputerName $s -ScriptBlock $command2 -ArgumentList $ConfigSection
Здесь я пытаюсь включить переменную $ ConfigSection, ноон возвращает мне следующую ошибку:
Невозможно связать параметр 'ConfigElement'.Не удается преобразовать значение «Microsoft.Web.Administration.ConfigurationSection» типа «Deserialized.Microsoft.Web.Administration.ConfigurationSection» в тип «Microsoft.Web.Administration.ConfigurationElement".
Я подумал, что возможнопричина в том, что мне нужно Import-Module WebAdministration
, но это не имеет никакого эффекта.Все та же ошибка .. Поскольку уже второй шаг не работает, я не могу продолжить ..
Есть идеи?