gpt4 book ai didi

powershell - 使用 Powershell WebAdministration 模块获取网站的根应用程序

转载 作者:行者123 更新时间:2023-12-02 23:47:22 26 4
gpt4 key购买 nike

我正在尝试在 Azure 中部署的网站的根目录中配置 Web 应用程序的 serviceAutoStartEnabled 和 serviceAutoStartProvider 属性。如果我了解自动启动过程,可以为单个网站下的特定 Web 应用程序设置这些属性。

我在 web 角色启动期间(在启动任务中获得提升的权限之后)执行一个 powershell 脚本来执行 web 管理任务,如下所示:

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 来获取应用程序并设置这两个属性,但是当我运行以下 powershell 命令时,我看不到根 ("/") 应用程序的应用程序:
(Get-WebApplication "*") | format-list *

那么如何使用 webadministration cmdlet 为根应用程序设置这两个属性呢?

最佳答案

您可以使用通用 Set-ItemProperty 设置这些cmdlet。例如:

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和一些非常丑陋的xpath。例如:
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

请注意,这两个 cmdlet 比 Get/Set-ItemProperty 更灵活。因为它们支持配置的所有部分,而 Get/Set-ItemProperty仅支持 IIS 公开的内容:提供程序。

关于powershell - 使用 Powershell WebAdministration 模块获取网站的根应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16381394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com