2

Azure にデプロイされた Web サイトのルートにある Web アプリケーションの serviceAutoStartEnabled プロパティと serviceAutoStartProvider プロパティを構成しようとしています。自動開始プロセスを理解していれば、これらのプロパティを 1 つの Web サイトで特定の Web アプリケーションに対して設定できます。

ここに示すように、Web 管理タスクを実行するために、Web ロールの開始中に (起動タスクで昇格された特権が取得された後)、powershell スクリプトを実行しています。

write-host "Begin RoleStart.ps1"

import-module WebAdministration

Add-WindowsFeature NET-WCF-HTTP-Activation45,NET-WCF-TCP-Activation45,NET-WCF-Pipe-Activation45

$listenerService = Get-WmiObject win32_service -filter "name='NetPipeActivator'"
$listenerService.ChangeStartMode("Automatic")
$listenerService.StartService()

$WebRoleSite = (Get-WebSite "*web*")
$WebRoleSiteName = $WebRoleSite.Name
$WebRoleAppPool = $WebRoleSite.ApplicationPool

New-ItemProperty "IIS:/Sites/$WebRoleSiteName" -name bindings -value @{protocol="net.pipe";bindingInformation="*"}
Set-ItemProperty "IIS:/Sites/$WebRoleSiteName" -Name EnabledProtocols 'http,net.pipe'

Set-ItemProperty -Path "IIS:\AppPools\$WebRoleAppPool" -Name startMode -Value AlwaysRunning

write-host "End RoleStart.ps1"

これにより、必要に応じて AlwaysRunning プロパティを使用してアプリ プールが設定されますが、アプリケーション固有の serviceAutoStartEnabled プロパティと serviceAutoStartProvider プロパティに新しい値を指定する必要があります。

Get-WebApplication を使用してアプリケーションを取得し、これら 2 つのプロパティを設定できることはわかっていますが、次の powershell コマンドを実行すると、ルート ("/") アプリケーションのアプリケーションが表示されません。

(Get-WebApplication "*") | format-list *

では、webadministration コマンドレットを使用してルート アプリケーションのこれら 2 つのプロパティを設定するにはどうすればよいでしょうか?

4

2 に答える 2

1

私はこれがかなり古いことを知っていますが、検索中にこれに出くわした私のような人のために、これが私がそれをやった方法です:

Import-Module WebAdministration;

$WebSiteName = "My Web Site";
$WebAppName = "MyWebApp";
$ProviderName = "PreWarmMyWebApp";
$ProviderType = "MyNamespace.MyClass, MyAssembly";

Add-WebConfiguration -PSPath 'IIS:\' -Filter '/system.applicationHost/serviceAutoStartProviders' -Value @{ name=$ProviderName; type=$ProviderType };
Set-WebConfigurationProperty -PSPath 'IIS:\' -Filter "/system.applicationHost/sites/site[@name='$WebSiteName']/application[@path='/$WebAppName']" -Name "serviceAutoStartEnabled" -Value "true";
Set-WebConfigurationProperty -PSPath 'IIS:\' -Filter "/system.applicationHost/sites/site[@name='$WebSiteName']/application[@path='/$WebAppName']" -Name "ServiceAutoStartProvider" -Value $ProviderName;

Swoogan の投稿から Set-WebConfigurationProperty ビットを取得しましたが、serviceAutoStartProviders の部分を自分で理解したので、完全なソリューションを投稿すると思いました:)

于 2016-02-15T19:58:30.143 に答える
1

これらは、汎用Set-ItemPropertyコマンドレットで設定できます。例えば:

Set-ItemProperty "IIS:\Sites\Default Web Site\Test\" -name serviceAutoStartEnabled -Value $true
Set-ItemProperty "IIS:\Sites\Default Web Site\Test\" -name serviceAutoStartProvider -Value ???

ここで、「テスト」は Web アプリケーションです。の有効な値がわかりませんserviceAutoStartProvider文字列として表示されている場合でも、Get-ItemProperty整数である場合があります。

次の方法で値を表示できます。

Get-ItemProperty "IIS:\Sites\Default Web Site\Test\" -name serviceAutoStartEnabled

オブジェクトで表示することもできます。

Get-WebApplication "*" | % { Write-Output "Path: $($_.Path), AutoStartEnabled: `
  $($_.Attributes["serviceAutoStartEnabled"].Value) AutoStartProvider: `
  $($_.Attributes["serviceAutoStartProvider"].Value)" }

ただし、Value読み取り専用であるため、設定しようとするとエラーが発生します。

最後に、値を取得および設定することができGet-WebConfigurationPropertyますSet-WebConfigurationProperty。例えば:

Get-WebConfigurationProperty "/system.applicationHost/sites/site[@name='Default Web Site' and @id='1']/application[@path='/Test']" -Name serviceAutoStartEnabled
Set-WebConfigurationProperty "/system.applicationHost/sites/site[@name='Default Web Site' and @id='1']/application[@path='/Test']" -Name serviceAutoStartEnabled -Value $true

これら 2 つのコマンドレットは、IIS: プロバイダーによって公開されるもののみをサポートするGet/Set-ItemPropertyのに対し、構成のすべての部分をサポートするため、より柔軟であることに注意してください。Get/Set-ItemProperty

于 2014-09-24T22:02:10.357 に答える