使用Powershell在非应用程序的文件夹中创建Web应用程序

Bar*_* Jr 5 iis powershell

我想在IIS中创建一个不在IIS站点根目录的Web应用程序.

即MySite/beta/WebApplication.

这是我的出发点:

New-WebApplication"WebApplication"-Site"MySite"-ApplicationPool"MyAppPool"-PhysicalPath"C:\ Sites\MySite\beta\WebApplication"

这创建了我想要的物理结构C:\Sites\MySite\beta\WebApplication,但使IIS看起来像这样:

MySite(IIS网站)

WebApplication(IIS WebApplication)

beta(文件夹)

WebApplication(文件夹)

有没有办法可以通过PowerShell完成?我真的不想beta成为一个Web应用程序,只是一个文件夹.

dot*_*sch 11

我知道这篇文章有点旧了但这里是我编写的一个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";
}
}
Run Code Online (Sandbox Code Playgroud)


web*_*1ar 5

由于您使用的物理文件存储库与“MySite”集合使用的相同,因此它将创建“beta”文件夹。如果您将这个新的 Web 应用程序放置在它自己的路径(即“C:\Sites\WebApps\WebApplication”)中,您将获得所需的结果。下面的代码对我有用。

New-WebApplication "TestingViaPosh" -Site "Default Web Site" -ApplicationPool "DefaultAppPool" -
PhysicalPath "C:\Users\MyUserId\Documents\TestWebApp"
Run Code Online (Sandbox Code Playgroud)

编辑:要在网站根目录下的文件夹中创建 Web 应用程序,您需要先在所需的站点中创建文件夹(即“C:\Sites\MySite\Beta”)。然后 Powershell 命令将如下所示:

New-WebApplication "TestingViaPosh" -Site "Default Web Site\Beta" -ApplicationPool "DefaultAppPool" -PhysicalPath "C:\Users\MyUserId\Documents\TestWebApp"
Run Code Online (Sandbox Code Playgroud)


J3R*_*3RM 4

由于有些人使用术语“文件夹”和“虚拟目录”,因此我认为值得发布如何在文件夹/虚拟目录中创建新的 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 
Run Code Online (Sandbox Code Playgroud)

$SiteName\APFW-api 在运行时等于“Act.Web.API\APFW-api”,因此会创建突出显示的应用程序。