Powershell

如何從 PowerShell 中的所有網站列出 IIS 中的虛擬目錄

  • October 16, 2019

我遇到了一個完整的障礙,無法弄清楚如何在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 
           
           }

您寫道,您無法弄清楚如何檢索:

  • 物理路徑

    • 可以通過physicalPathnote 屬性直接訪問
  • 應用程序池協會

    • 沒有意義,應用程序被分配到應用程序池,目錄本身不是
  • 站點名稱

    • 你已經知道了($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 主機。

引用自:https://serverfault.com/questions/610953