gpt4 book ai didi

asp.net - Powershell 脚本创建一个 "sub"网站

转载 作者:行者123 更新时间:2023-12-01 13:46:00 24 4
gpt4 key购买 nike

我有两个文件夹:

c:\inetpub\site1
c:\inetpub\site1Sub

我希望“site1”成为“父”网站,“site1Sub”成为“子”网站。这两个站点应该在同一个应用程序池下运行,该应用程序池是专为这些站点创建的自定义池,称为“site1”。在 IIS 管理器 (7.5) 中,我只需创建应用程序池,然后创建父站点,然后右键单击父站点并“添加应用程序”,将其指向物理路径“c:\inetpub\site1Sub”。这一切都很好。

然而,当我尝试在 Powershell 中编写脚本时,事情变得困难起来。我可以毫无问题地创建“site1”和应用程序池。这是一个痛苦的子网站。我尝试了两种方法:

方法 1:使用 New-Item 并在之后设置应用程序池。

$subSite = New-Item "IIS:\Sites\site1\site1Sub" -physicalPath "C:\inetpub\site1Sub" -type "Application"
$subSite | Set-ItemProperty -Name "applicationPool" -Value "site1"

使用这种方法,我在 Set-ItemProperty 命令后收到错误消息:

Set-ItemProperty : Cannot find path 'C:\site1Sub' because it does not exist.
At line:1 char:127
+ $subSite | Set-ItemProperty -Name "applicationPool" -Value "site1" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\site1Sub:String) [Set-ItemProperty], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetItemPropertyCommand

方法 2: 创建虚拟目录并使用 ConvertTo-WebApplication(如 this answer 中所示)。

New-WebVirtualDirectory -Site "site1" -Name "site1Sub" -PhysicalPath "c:\inetpub\site1Sub"
ConvertTo-WebApplication -ApplicationPool "site1" "IIS:\Sites\site1\site1Sub"

这运行良好,此外,它在 IIS 管理器中看起来很好,但是当我尝试导航到该站点时,我收到一条错误消息,指出 web.config 无法解析:

It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

我完全被难住了。如何在 Powershell 中编写此场景的脚本?

最佳答案

我发现在网站下创建应用程序时,我需要在调用 New-Item 时指定 -Force 开关。我没有检查该站点是否已经存在(Sneijder 的回答显示了如何使用 Test-Path 执行此操作),但这应该可以解决问题:

Import-Module WebAdministration

$sitePath = 'IIS:\Sites\site1'
$subSitePath = "$sitePath\site1Sub"
$appPoolName = 'site1'

# Create Site and Subsite
New-Item $sitePath -PhysicalPath 'C:\Inetpub\site1' -Bindings @{protocol="http";bindingInformation=":80:"} }
New-Item $subSitePath -Type Application -PhysicalPath 'C:\Inetpub\site1Sub' -Force

# Create App Pool
New-Item "IIS:\AppPools\$appPoolName"

# Associate sites to App Pool
Set-ItemProperty $sitePath -Name applicationPool -Value $appPoolName
Set-ItemProperty $subSitePath -Name applicationPool -Value $appPoolName

关于asp.net - Powershell 脚本创建一个 "sub"网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36164310/

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