2012-11-02 41 views
3

我已經看過這個問題Getting all virtual directories for a IIS6 web site using WMI但它沒有回答我的問題。如何使用WMI與PowerShell列出IIS6網站的所有虛擬目錄?

我可以得到一個網站的列表,但不是其中的應用程序或虛擬目錄。我試過以下。

Get-WmiObject -class "IIsWebServerSetting" -namespace "root\microsoftiisv2" | select-object __SERVER, ServerComment, Name 
Get-WmiObject -class "IIsWebVirtualDir" -namespace "root\microsoftiisv2" | select-object __SERVER, ServerComment, Name, Path, DefaultDoc 
Get-WmiObject -class "IIsWebVirtualDirSetting" -namespace "root\microsoftiisv2" | select-object __SERVER, ServerComment, Name, Path, DefaultDoc 

這些都不會檢索虛擬目錄列表。

我可以看到虛擬目錄中Metabase.xml文件

<IIsWebVirtualDir Location ="/LM/W3SVC/1653786949/root/PBSNET2005/GUI" 
     AccessFlags="AccessExecute | AccessRead | AccessScript" 
     AppFriendlyName="ClientServicesGUI" 

我之所以要求,這是因爲我想用一個綠色/藍色部署過程。要確定哪個版本更新我需要找出當前版本是什麼。我將使用虛擬目錄的物理路徑來執行此操作。

有沒有人有另一種方法獲取虛擬目錄的物理路徑?有沒有人直接查詢或更新metabase.xml文件?

+0

我確定這個命名空間應該是'root \ microsoft \ iisv2'(注意額外的'\\')。 – Richard

+1

@Richard:我打算提高你的評論,但是OP可能是對的。看到這裏:[MicrosoftIISv2](http://board.issociate.de/thread/240375/IIS-6-Windows-2003-Server-UPGRADE.html)。 – Neolisk

+0

感謝您的建議,但不幸的是,他們沒有工作。 –

回答

3

試試這個:

gwmi -Namespace "root/MicrosoftIISv2" -Query "SELECT * FROM IIsWebVirtualDirSetting" | select name,path,AppFriendlyName 
+0

這只是返回的網站。它沒有列出它們中的虛擬目錄。 –

+0

我有點不清楚你想要什麼,再試一次,我編輯輸出AppFriendlyName也 –

0

你需要指定路徑的虛擬目錄。 WMI不會返回文件夾樹下的虛擬目錄。如果有人需要,這裏是powershell功能。

function Get-VirtualDirectoryPhysicalPathUsingWMI ([string]$server,[string]$siteName,[string]$vDirName,[string]$pathToVDir) 
    { 
     Invoke-Command $server -Script { param($siteName,$vDirName,$pathToVDir) 
      $iisWmiObj = Get-WmiObject -Namespace 'root\MicrosoftIISv2' -Class IISWebServerSetting -Filter "ServerComment = '${siteName}'" 
      $objIIS = new-object System.DirectoryServices.DirectoryEntry("IIS://localhost/" + $iisWmiObj.Name + $pathToVDir) 
      $directories = $objIIS.psbase.children 
      $vDir = $directories.find($vDirName, "IIsWebVirtualDir") 

      return $vDir.path 
      } -Args $siteName,$vDirName,$pathToVDir 

     #Get-VirtualDirectoryPhysicalPathUsingWMI "pbsdevmaintws02" "Default Web Site" "GUI" "/Root/PBSNET2005" 
    } 
相關問題