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

时间:2014-01-16 22:06:52

标签: iis powershell

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

即。的MySite /β/ 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应用程序,只是一个文件夹。

3 个答案:

答案 0 :(得分:10)

我知道这篇文章有点旧了但这里是我编写的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";
}
}

答案 1 :(得分:4)

由于您使用的是“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"

答案 2 :(得分:0)

由于有些人使用了“文件夹和虚拟目录”一词,所以我认为值得一提的是如何在“文件夹/虚拟目录”中创建新的Web应用程序。在IIS管理器中看起来像这样。 enter image description here

您只需要使用“路径”作为站点名称。

String contact = "+00 9876543210"; // use country code with your phone number
    String url = "https://api.whatsapp.com/send?phone=" + contact;
    try {
         PackageManager pm = context.getPackageManager();
         pm.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES);
         Intent i = new Intent(Intent.ACTION_VIEW);
         i.setData(Uri.parse(url));
         startActivity(i);                            
    } catch (PackageManager.NameNotFoundException e) {
    Toast.makeText(MainActivity.activity, "Whatsapp app not installed in your phone", Toast.LENGTH_SHORT).show();
    e.printStackTrace();
    }

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