Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iis 使用Powershell在非应用程序文件夹中创建web应用程序_Iis_Powershell - Fatal编程技术网

Iis 使用Powershell在非应用程序文件夹中创建web应用程序

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

我想在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 "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版本。你现在有解决办法了吗?这看起来像是我想要的。谢谢当物理路径是某个网络路径时,它会失败