6

Я пытаюсь проверить, существует ли пул приложений IIS на удаленном сервере с помощью сценария PowerShell. Я запускаю команду:

test-path "IIS:\AppPools\DefaultAppPool"

Если я запускаю этот сценарий непосредственно на рассматриваемом сервере IIS, я получаю ответ "True", поэтому это говорит о том, что у меня правильно настроено управление IIS в PowerShell. Однако когда я запускаю следующий скрипт с удаленного сервера, я получаю ответ "Ложь"

invoke-command -ComputerName IISSERVER -ScriptBlock { test-path "IIS:\AppPools\DefaultAppPool" }

Я знаю, что удаленное взаимодействие PowerShell правильно настроено, потому что я могу запустить следующую команду и получить список файлов

invoke-command -ComputerName IISSERVER -ScriptBlock { get-childitems "c:\" }

Так почему я получаю неправильный ответ о существовании пула приложений?

1 ответ1

5

Это связано с тем, что сеанс удаленного взаимодействия PowerShell не включает в себя диск IIS: PowerShell. (Попробуйте запустить «Get-PSDrive» локально, а затем через Invoke-Command, чтобы увидеть разницу).

Диск «IIS:» почти наверняка добавляется оснасткой WebAdministration PS при локальном запуске Powershell на сервере IIS, либо потому, что вы запускаете PowerShell с помощью специального ярлыка, специфичного для IIS, либо из-за сценария локального профиля PowerShell. работает и загружает его.

Вы должны получить требуемые результаты, явно добавив оснастку WebAdministration в удаленный сеанс (который создает диск «IIS:»), изменив команду Invoke-Command так, чтобы она выглядела следующим образом:

invoke-command -ComputerName IISSERVER -ScriptBlock { Add-PSSnapin WebAdministration; test-path "IIS:\AppPools\DefaultAppPool" }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .