创建虚拟目录并将其转换为 WebApplication 时,为什么输出显示两个条目
When creating a virtual directory and converting it to a WebApplication, why does the output show two entries
我创建了一个 PowerShell 脚本来创建虚拟目录并将其转换为具有现有物理路径的 WebApplication。
它有效,但我发现奇怪的是,在将其转换为 WebApplication 时,输出显示两个条目。
Name PhysicalPath
---- ------------
v2 E:\inetpub\MyWebsite\v2
v2 E:\inetpub\MyWebsite\v2
我尝试了不同的方法来创建虚拟文件夹和 WebApplication。
function Create-VirtualDirectory-With-AppPool {
Param (
[string] $WebSiteName,
[string] $VirtualFolderName,
[string] $AppPoolName
)
$PhysicalPathWebSite = (Get-Website -Name $WebSiteName | Select-Object).PhysicalPath
$PhysicalPathVirtDir = "$PhysicalPathWebSite$VirtualFolderName"
Write-Host "The following will be created:"
Write-Host "- Virtual folder: $WebSiteName$VirtualFolderName with physical path: $PhysicalPathVirtDir"
Write-Host "- Application: IIS:\Sites$WebSiteName$VirtualFolderName"
Read-Host "Press enter to continue (Ctrl-c to abort)"
New-WebVirtualDirectory -Site $WebSiteName -Name $VirtualFolderName -PhysicalPath $PhysicalPathVirtDir
# Other attempt, same result:
#New-Item "IIS:\Sites$WebSiteName$VirtualFolderName" -type VirtualDirectory -physicalPath $PhysicalPathVirtDir
ConvertTo-WebApplication "IIS:\Sites$WebSiteName$VirtualFolderName"
# Other attempt, same result:
#New-Item "IIS:\Sites$WebSiteName$VirtualFolderName" -type Application -physicalPath $PhysicalPathVirtDir
# Set AppPool
Set-ItemProperty "IIS:\Sites$WebSiteName$VirtualFolderName" -name applicationPool -value $AppPoolName
Write-Host "Done."
}
我是不是做错了什么?
有缓存吗?
确实如Mathias所说。
在为虚拟目录和转换为 WebApplication 使用管道传输到 | Out-Null
时,我看到了单独的输出。
因此,有两种选择:丢弃输出或将输出放在变量中并添加一些文本。我选最后一个。
function Create-VirtualDirectory-With-AppPool {
Param (
[string] $WebSiteName,
[string] $VirtualFolderName,
[string] $AppPoolName
)
$PhysicalPathWebSite = (Get-Website -Name $WebSiteName | Select-Object).PhysicalPath
$PhysicalPathVirtDir = "$PhysicalPathWebSite$VirtualFolderName"
Write-Host "The following will be created:"
Write-Host "- Virtual folder: $WebSiteName$VirtualFolderName with physical path: $PhysicalPathVirtDir"
Write-Host "- Application: IIS:\Sites$WebSiteName$VirtualFolderName"
Read-Host "Press enter to continue (Ctrl-c to abort)"
$OutputNewvDir = New-WebVirtualDirectory -Site $WebSiteName -Name $VirtualFolderName -PhysicalPath $PhysicalPathVirtDir
$OutputConvertApp = ConvertTo-WebApplication "IIS:\Sites$WebSiteName$VirtualFolderName"
# Set AppPool
Set-ItemProperty "IIS:\Sites$WebSiteName$VirtualFolderName" -name applicationPool -value $AppPoolName
Write-Host "New Virtual directory: $($OutputNewvDir | Format-List | Out-String)"
Write-Host "Convert to Application: $($OutputConvertApp | Format-List | Out-String)"
Write-Host "Done."
}
New Virtual directory:
Name : V2
PhysicalPath : C:\inetpub\wwwroot\MyWebsite\V2
Convert to Application:
Path : /V2
ApplicationPool : DefaultAppPool
EnabledProtocols : http
PhysicalPath : C:\inetpub\wwwroot\MyWebsite\V2
一个奇怪的事情是两个命令都有不同数量的参数,但有些是一起输出时显示的(如我原来的问题所示)。
不过我可以接受,以后再研究。
我创建了一个 PowerShell 脚本来创建虚拟目录并将其转换为具有现有物理路径的 WebApplication。 它有效,但我发现奇怪的是,在将其转换为 WebApplication 时,输出显示两个条目。
Name PhysicalPath
---- ------------
v2 E:\inetpub\MyWebsite\v2
v2 E:\inetpub\MyWebsite\v2
我尝试了不同的方法来创建虚拟文件夹和 WebApplication。
function Create-VirtualDirectory-With-AppPool {
Param (
[string] $WebSiteName,
[string] $VirtualFolderName,
[string] $AppPoolName
)
$PhysicalPathWebSite = (Get-Website -Name $WebSiteName | Select-Object).PhysicalPath
$PhysicalPathVirtDir = "$PhysicalPathWebSite$VirtualFolderName"
Write-Host "The following will be created:"
Write-Host "- Virtual folder: $WebSiteName$VirtualFolderName with physical path: $PhysicalPathVirtDir"
Write-Host "- Application: IIS:\Sites$WebSiteName$VirtualFolderName"
Read-Host "Press enter to continue (Ctrl-c to abort)"
New-WebVirtualDirectory -Site $WebSiteName -Name $VirtualFolderName -PhysicalPath $PhysicalPathVirtDir
# Other attempt, same result:
#New-Item "IIS:\Sites$WebSiteName$VirtualFolderName" -type VirtualDirectory -physicalPath $PhysicalPathVirtDir
ConvertTo-WebApplication "IIS:\Sites$WebSiteName$VirtualFolderName"
# Other attempt, same result:
#New-Item "IIS:\Sites$WebSiteName$VirtualFolderName" -type Application -physicalPath $PhysicalPathVirtDir
# Set AppPool
Set-ItemProperty "IIS:\Sites$WebSiteName$VirtualFolderName" -name applicationPool -value $AppPoolName
Write-Host "Done."
}
我是不是做错了什么? 有缓存吗?
确实如Mathias所说。
在为虚拟目录和转换为 WebApplication 使用管道传输到 | Out-Null
时,我看到了单独的输出。
因此,有两种选择:丢弃输出或将输出放在变量中并添加一些文本。我选最后一个。
function Create-VirtualDirectory-With-AppPool {
Param (
[string] $WebSiteName,
[string] $VirtualFolderName,
[string] $AppPoolName
)
$PhysicalPathWebSite = (Get-Website -Name $WebSiteName | Select-Object).PhysicalPath
$PhysicalPathVirtDir = "$PhysicalPathWebSite$VirtualFolderName"
Write-Host "The following will be created:"
Write-Host "- Virtual folder: $WebSiteName$VirtualFolderName with physical path: $PhysicalPathVirtDir"
Write-Host "- Application: IIS:\Sites$WebSiteName$VirtualFolderName"
Read-Host "Press enter to continue (Ctrl-c to abort)"
$OutputNewvDir = New-WebVirtualDirectory -Site $WebSiteName -Name $VirtualFolderName -PhysicalPath $PhysicalPathVirtDir
$OutputConvertApp = ConvertTo-WebApplication "IIS:\Sites$WebSiteName$VirtualFolderName"
# Set AppPool
Set-ItemProperty "IIS:\Sites$WebSiteName$VirtualFolderName" -name applicationPool -value $AppPoolName
Write-Host "New Virtual directory: $($OutputNewvDir | Format-List | Out-String)"
Write-Host "Convert to Application: $($OutputConvertApp | Format-List | Out-String)"
Write-Host "Done."
}
New Virtual directory:
Name : V2
PhysicalPath : C:\inetpub\wwwroot\MyWebsite\V2
Convert to Application:
Path : /V2
ApplicationPool : DefaultAppPool
EnabledProtocols : http
PhysicalPath : C:\inetpub\wwwroot\MyWebsite\V2
一个奇怪的事情是两个命令都有不同数量的参数,但有些是一起输出时显示的(如我原来的问题所示)。 不过我可以接受,以后再研究。