[英]How to create app pool and virtual directory for IIS in Powershell
[英]Powershell : How to create IIS 6 Virtual Directory/Web application under a Subfolder
我正在尝试使用 Powershell 在 IIS 6 网站的特定子文件夹下创建 Web 应用程序/虚拟目录,如下所示:
Test (website) ----------------> c:\InetPub
SubDirectory ------------------> ..\Subdirectory
gadgets (Web App) -----------------> ..\Gadgets
$WebSiteName = “Test”
$virtualDirName = “subdirectory\gadgets”
$appPoolName = “DefaultAppPool”
$VirtalDirHomePath = "c:\InetPub\Subdirectory\Gadgets"
$iisWebSite = Get-WmiObject "IISWebServerSetting" `
-Namespace "root\MicrosoftIISv2" `
-filter "ServerComment like '%$WebSiteName%'"
$virtualDirSettings = [wmiclass] "root\MicrosoftIISv2:IIsWebVirtualDirSetting"
$newVDir = $virtualDirSettings.CreateInstance()
$newVDir.Name = ($iisWebSite.Name + '/ROOT/' + $virtualDirName)
$newVDir.Path = $VirtalDirHomePath
$newVDir.Put();
$nvdir = $iisWebSite.Name + '/ROOT/' + $virtualDirName
$nvdir = $nvdir.Replace("\", "/")
$v = Get-WmiObject -Class IIsWebVirtualDir -Namespace root\microsoftiisv2 `
-filter "Name='$nvdir'"
#Create WebAppliction
$v.AppCreate3(2, $appPoolName, 1)
如果我使用正斜杠路径分隔符( subdirectory/gadgets
)指定$virtualDirName
,则$newVDir.Put()
调用会引发以下异常
使用“0”参数调用“Put”的异常:“Win32:系统找不到指定的路径。
如果我使用反斜杠路径分隔符 (subdirectory\gadgets) 更改$virtualDirName
,则$newVDir.Put()
调用将成功返回。
我不确定这是否是正确的方法。
有没有更好的方法在特定子文件夹下创建 Web Application/VirtualDirectory 以及如何列出在子文件夹下创建的 VirtualDirectory/WebApplication。
通过脚本在 IIS 6.0 中创建虚拟目录的另一种解决方案(不涉及 PowerShell)是使用iisvdir.vbs脚本:
SET webSiteName=Test
SET virtualDirName=subdirectory/gadgets
SET virtualDirHomePath=C:\InetPub\Subdirectory\Gadgets
cscript %SystemRoot%\system32\iisvdir.vbs /create %webSiteName% %virtualDirName% %virtualDirHomePath%
请注意, virtualDirName
中的虚拟目录路径是使用正斜杠指定的。
您还可以使用相同的iisvdir.vbs脚本列出特定路径中的虚拟目录:
cscript %SystemRoot%\system32\iisvdir.vbs /query %webSiteName%/%virtualDirName%
试试这个。 它连接到网站 1(默认网站)的根目录。 为小工具文件夹创建一个 IIsWebDirectory object 并为其分配一个应用程序池。
$root = [adsi] "IIS://localhost/W3SVC/1/ROOT"
$vDir = $root.Create("IIsWebDirectory", "SubDirectory\Gadgets")
$vDir.AppCreate3(2, "DefaultAppPool", $false)
$vDir.AppFriendlyName = "Andy Test"
$vDir.SetInfo()
如果您需要连接到默认 web 站点以外的网站,您可以使用以下命令获取该网站的 ID:
([adsi] "IIS://localhost/W3SVC").psbase.Children | ? {$_.psbase.schemaclassname -eq "IIsWebServer" } | select Path, ServerComment
Output:
Path ServerComment
---- -------------
IIS://localhost/W3SVC/1 {Default Web Site}
IIS://localhost/W3SVC/2 {WHS site}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.