Почему Set-ItemProperty не влияет на приложения IIS под Windows 10?
Большинство наших веб-приложений включают Deploy.ps1 Powershell script. Octopus Deploy использует это для настройки приложений во время производственных развертываний, но мы также используем его для настройки локальных параметров IIS для разработчиков. Работает отлично в Windows 7, Windows 8.1 и на всех наших производственных серверах Win2012.
Он не работает в Windows 10, и это происходит потому, что командлет Set-ItemProperty
не действует. Нет сообщения об ошибке или что-то еще, он ничего не делает.
Сайт IIS api.example.com уже существует, и мы используем Powershell для создания приложения /myapp, а затем изменим физический путь приложения на D:\Projects\Demo
PS C:\> IIS:
PS IIS:\> cd Sites\api.example.com
PS IIS:\Sites\api.example.com> New-WebApplication myapp -site api.example.com -PhysicalPath C:\inetpub\wwwroot
Name Application pool Protocols Physical Path
---- ---------------- --------- -------------
myapp DefaultAppPool http C:\inetpub\wwwroot
PS IIS:\Sites\api.example.com> set-itemproperty myapp -name PhysicalPath -value D:\Projects\Demo
PS IIS:\Sites\api.example.com> get-itemproperty myapp
Name Application pool Protocols Physical Path
---- ---------------- --------- -------------
demo DefaultAppPool http C:\inetpub\wwwroot
^ THIS IS WRONG!
Выполняя тот же набор команд в Windows 7, вы получаете идентичный результат, но на последнем шаге свойство PhysicalPath изменилось, как ожидалось:
PS IIS:\Sites\api.example.com> get-itemproperty myapp
Name Application pool Protocols Physical Path
---- ---------------- --------- -------------
demo DefaultAppPool http D:\Projects\Demo
Любая идея, что происходит? Есть ли какие-то новые ограничения администратора на IIS10? Какие-то дополнительные повышенные разрешения Мне нужно изменить настройки в существующих веб-приложениях или что-то еще?
UPDATE: он работает нормально, если элемент является сайтом IIS, но не удается, если элемент является веб-приложением, что заставляет меня задаться вопросом, может ли это быть просто ошибкой в провайдере. Любые идеи?
Ответы
Ответ 1
Я не знаю, почему, но первая буква свойства, которое вы хотите установить, должна быть строчной. г. physicalPath
Это будет работать:
set-itemproperty myapp -name physicalPath -value D:\Projects\Demo
Похоже на ошибку, но эта нотация (строчная буква с первой буквой) также работает для других ваших сред Windows, поэтому она должна быть допустимым обходным решением.
Ответ 2
Я смог реплицировать вашу проблему. Set-ItemProperty
работал у меня, если я работал на сайте.
Эти командлеты из модуля WebAdministration, и я проверил полную документацию. Кажется, что они используют только сайты в соответствующих примерах. Вы также можете проверить то же самое, если вы еще этого не сделали: Поставщик веб-администрирования (IIS) для Windows PowerShell
Как вы указали, это может быть ошибка. Я бы рекомендовал сообщить об этом здесь: Microsoft Connect - PowerShell
Ответ 3
Это работает для меня (без Set-Location):
Set-ItemProperty IIS:\sites\$sitename\$appName -Name applicationPool -Value $appPoolName