Powershell
如何從 PowerShell 中的所有網站列出 IIS 中的虛擬目錄
我遇到了一個完整的障礙,無法弄清楚如何在
IIS 8
. 我一直在檢索應用程序和空參數錯誤,只是找不到一種方法來列出虛擬目錄。我需要以下數據來列出有關虛擬目錄的資訊:
- 物理路徑
- 應用程序池協會
- 站點名稱
- 證書
下面是我一直在使用和弄亂的程式碼:
*See revised code below*
我還使用該
Appcmd.exe
命令嘗試列出虛擬目錄:C:\Windows\System32\inetsrv\appcmd.exe LIST VDIRS
但我仍然沒有得到我需要的輸出。任何事情或任何幫助將不勝感激!謝謝!
編輯# - - - - - - - - - - - - - - - - - - - - - - - - ———————-
通過註釋掉幾行來列出我的虛擬目錄,但它只列印出名稱和:
- 物理路徑
- 應用程序池協會
- 站點名稱
- 證書
我仍然不知道,下面是修改後的程式碼:
Import-Module WebAdministration $Websites = Get-ChildItem IIS:\Sites foreach($Site in $Websites) { $webapps = Get-WebApplication -Site $Site.name $VDir = Get-WebVirtualDirectory -Site $Site.name #-Application $webapps.name foreach($webvdirectory in $VDir) { $webvdirectory2 = $webvdirectory.path Write-Host $webvdirectory2.split("/")[-1] #Write-Host $webvdirectory #Write-Host $webvdirectory.name } #Write-Host $VDir }
您寫道,您無法弄清楚如何檢索:
物理路徑
- 可以通過
physicalPath
note 屬性直接訪問應用程序池協會
- 沒有意義,應用程序被分配到應用程序池,目錄本身不是
站點名稱
- 你已經知道了(
$Site.name
)證書
- 我假設您只想要使用者名(如果存在)
這些都可以通過對現有腳本的一些細微改動來檢索:
Import-Module WebAdministration $Websites = Get-ChildItem IIS:\Sites $AllVDirs = @() foreach($Site in $Websites) { $VDirs = Get-WebVirtualDirectory -Site $Site.name foreach($webvdirectory in $VDirs) { $vdir = New-Object psobject -Property @{ "Name" = ($webvdirectory.path -split "/")[-1] "Site" = $Site.name "Path" = $webvdirectory.path "PhysicalPath" = $webvdirectory.physicalPath "PhysicalPathCredentials" = $webvdirectory.userName } $AllVDirs += $vdir } } $AllVDirs
現在您可以導出
$AllVDirs
到 Xml、Csv 或簡單地將其列印到 PowerShell 主機。