Iis 使用Powershell在非应用程序文件夹中创建web应用程序
我想在IIS中创建一个不在IIS站点根目录下的web应用程序 i、 e.MySite/beta/WebApplication 这是我的出发点: 新的Web应用程序“WebApplication”-站点“MySite”-应用程序池“MyAppPool”-物理路径“C:\Sites\MySite\beta\WebApplication” 这为我创建了我想要的物理结构Iis 使用Powershell在非应用程序文件夹中创建web应用程序,iis,powershell,Iis,Powershell,我想在IIS中创建一个不在IIS站点根目录下的web应用程序 i、 e.MySite/beta/WebApplication 这是我的出发点: 新的Web应用程序“WebApplication”-站点“MySite”-应用程序池“MyAppPool”-物理路径“C:\Sites\MySite\beta\WebApplication” 这为我创建了我想要的物理结构C:\Sites\MySite\beta\WebApplication,但使IIS看起来像这样: New-WebApplication
C:\Sites\MySite\beta\WebApplication
,但使IIS看起来像这样:
New-WebApplication "TestingViaPosh" -Site "Default Web Site\Beta" -ApplicationPool "DefaultAppPool" -PhysicalPath "C:\Users\MyUserId\Documents\TestWebApp"
MySite(IIS网站)
WebApplication(IIS WebApplication)
测试版(文件夹)
Web应用程序(文件夹)
有没有办法通过powershell实现这一点?我真的不希望
beta
成为一个web应用程序,只是一个文件夹。由于您使用的物理文件存储库与“MySite”集合使用的物理文件存储库相同,因此它将创建“beta”文件夹。如果将此新web应用程序放置在其自己的路径(即“C:\Sites\WebApps\WebApplication”)中,您将获得所需的结果。下面的代码对我有用
New-WebApplication "TestingViaPosh" -Site "Default Web Site" -ApplicationPool "DefaultAppPool" -
PhysicalPath "C:\Users\MyUserId\Documents\TestWebApp"
编辑:要在网站根目录下的文件夹中创建web应用程序,首先需要在所需的网站(即“C:\Sites\MySite\Beta”)中创建文件夹。然后Powershell命令将如下所示:
New-WebApplication "TestingViaPosh" -Site "Default Web Site\Beta" -ApplicationPool "DefaultAppPool" -PhysicalPath "C:\Users\MyUserId\Documents\TestWebApp"
我知道这篇文章有点老,但下面是我编写的powershell脚本,它可以将现有文件夹转换为IIS中的web应用程序,如果不存在,则创建新文件夹和web应用程序。它还为它创建了应用程序池。它接收应用程序名称数组,因此您可以创建多个web应用程序。这是我的第一个powershell脚本,因此如果您有任何建议,请随时发表评论
#Receives an array of appnames and creates the app pools and web applications or converts the folder to an application
Param([parameter(Mandatory=$true)][string[]]$appNames)
$useDefaultPhysicalPath = Read-Host "Would you like to use the default physical path? (C:\inetpub\wwwroot\)";
Import-Module WebAdministration;
$physicalPath = "C:\inetpub\wwwroot\";
if(!($useDefaultPhysicalPath.ToString().ToLower() -eq "yes" -or $useDefaultPhysicalPath.ToString().ToLower() -eq "y"))
{
$physicalPath = Read-Host "Please enter the physical path you would like to use with a trailing \ (do not include the app name)";
}
$appPath = "IIS:\Sites\Default Web Site\";
foreach($appName in $appNames)
{
if((Test-Path IIS:\AppPools\$appName) -eq 0)
{
New-WebAppPool -Name $appName -Force;
}
if((Test-Path $appPath$appName) -eq 0 -and (Get-WebApplication -Name $appName) -eq $null)
{
New-Item -ItemType directory -Path $physicalPath$appName;
New-WebApplication -Name $appName -ApplicationPool $appName -Site "Default Web Site" -PhysicalPath $physicalPath$appName;
}
elseif((Get-WebApplication -Name $appName) -eq $null -and (Test-Path $appPath$appName) -eq $true)
{
ConvertTo-WebApplication -ApplicationPool $appName $appPath$appName;
}
else
{
echo "$appName already exists";
}
}
因为有些人使用文件夹和虚拟目录这一术语,所以我认为值得发布如何在文件夹/虚拟目录中创建新的Web应用程序。在IIS管理器中看起来像这样。 您只需使用路径作为站点名称
Import-Module WebAdministration
$SiteName = "Act.Web.API" # IIS Site Name
New-WebVirtualDirectory -Site $SiteName -Name APFW-api -PhysicalPath C:\inetpub\wwwroot
New-WebApplication -Name Act.Web.API -Site $SiteName\APFW-api -PhysicalPath "C:\Program Files (x86)\ACT\APFW-api" -ApplicationPool $SiteAppPool
$SiteName\APFW api在运行时等于“Act.Web.api\APFW api”,因此将创建突出显示的应用程序。但该应用程序是在哪里创建的?是直接在
默认网站下
还是在beta
文件夹内?我知道它最终会在哪里,我关心的是它在IIS管理器中的外观。对我来说,新的web应用程序是在默认网站下创建的。此实例中没有beta文件夹。只需将“MySite”和新Web应用程序的文件位置分开即可。不幸的是,这正是我试图解决的问题。我不希望web应用程序位于网站的根目录下,我希望它显示在文件夹中。这在OP中完全不清楚。让我对此进行修改并找到解决方案。还有一个额外的beta(文件夹)。我有这样的确切要求,用户需要v104、v105,类似于您的beta版本。你现在有解决办法了吗?这看起来像是我想要的。谢谢当物理路径是某个网络路径时,它会失败