20

ほとんどの Web アプリケーションには、Deploy.ps1 Powershell スクリプトが含まれています。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 に新しい管理者制限はありますか? 既存の Web アプリケーションなどの設定を変更するために必要な、ある種の特別な昇格された権限はありますか?

更新: アイテムが IIS サイトの場合は正常に動作するようですが、アイテムが Web アプリケーションの場合は失敗します。これはプロバイダーのバグではないかと思います。何か案は?

4

3 に答える 3

25

理由はわかりませんが、設定するプロパティの最初の文字は小文字にする必要があります。 physicalPath

これはうまくいきます:

set-itemproperty myapp -name physicalPath -value D:\Projects\Demo

私にはバグのように思えますが、この表記 (最初の文字が小文字) は他の Windows 環境でも機能するため、有効な回避策になるはずです。

于 2016-04-26T08:17:28.030 に答える
4

問題を再現できました。Set-ItemProperty私がサイトで働いていた場合、私のために働いた。

これらのコマンドレットはWebAdministrationモジュールからのものであり、完全なドキュメントを確認しました。関連する例では、Web サイトのみを使用しているようです。まだ確認していない場合は、ここで同じことを確認することもできます: Windows PowerShell の Web 管理 (IIS) プロバイダー

ご指摘の通りバグかもしれません。これをここで報告することをお勧めします: Microsoft Connect - PowerShell

于 2016-04-25T18:36:54.110 に答える
-1

これは私にとってはうまくいきます(Set-Locationなし):

Set-ItemProperty IIS:\sites\$sitename\$appName -Name applicationPool -Value $appPoolName
于 2016-04-11T05:43:41.710 に答える