为什么Set-ItemProperty对Windows 10下的IIS应用程序没有影响?

Dyl*_*tie 19 powershell web-administration windows-10 iis-10

我们的大多数Web应用程序都包含Deploy.ps1 Powershell脚本.Octopus Deploy使用它在生产部署期间配置应用程序,但我们也使用它来设置开发人员的本地IIS设置.在Windows 7,Windows 8.1和我们所有的Win2012生产服务器上都可以正常工作.

它不适用于Windows 10,这似乎是因为Set-ItemPropertycmdlet无效.没有错误消息或任何东西,它只是没有做任何事情.

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!
Run Code Online (Sandbox Code Playgroud)

在Windows 7上运行完全相同的命令集,您将获得相同的输出,但在最后一步,PhysicalPath属性已按预期更改:

PS IIS:\Sites\api.example.com> get-itemproperty myapp

Name             Application pool   Protocols    Physical Path
----             ----------------   ---------    -------------
demo             DefaultAppPool     http         D:\Projects\Demo
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?IIS10上有一些新的管理员限制吗?我需要修改现有Web应用程序或某些设置的某些额外提升权限?

更新:如果该项目是一个IIS站点似乎工作正常,但如果该项目是一个Web应用程序失败,这让我想知道这可能只是提供程序中的错误.有任何想法吗?

Mar*_*ndl 21

我不知道为什么,但你要设置的属性的第一个字母必须是小写的,例如 physicalPath

这将有效:

set-itemproperty myapp -name physicalPath -value D:\Projects\Demo
Run Code Online (Sandbox Code Playgroud)

对我来说似乎是一个错误,但这种符号(首字母小写)也适用于您的其他Windows环境,因此应该是一个有效的解决方法.