Cách liệt kê các Thư mục ảo trong IIS từ tất cả các trang web trong PowerShell


8

Tôi đã đạt được một rào cản hoàn chỉnh và không thể tìm ra cách in ra các thư mục ảo cho mỗi trang web IIS 8. Tôi tiếp tục truy xuất Ứng dụng và các lỗi đối số rỗng và chỉ không thể tìm ra cách để liệt kê các thư mục ảo.

Tôi cần các dữ liệu sau để liệt kê ra các Thư mục ảo:

  • Con đường vật lý
  • Hiệp hội hồ bơi ứng dụng
  • Tên trang web
  • Thông tin xác thực

Dưới đây là mã tôi đã và đang sử dụng:

    *See revised code below*

Tôi cũng đã sử dụng Appcmd.exelệnh để thử và liệt kê các Thư mục ảo:

C:\Windows\System32\inetsrv\appcmd.exe LIST VDIRS

Nhưng tôi vẫn không nhận được đầu ra tôi cần. Bất cứ điều gì hoặc bất kỳ trợ giúp sẽ được đánh giá cao! Cảm ơn!

BIÊN TẬP#------------------------------------------------ ----------------------

Có các thư mục ảo của tôi để liệt kê ra bằng cách bình luận một vài dòng nhưng nó chỉ in ra tên và:

  • Con đường vật lý
  • Hiệp hội hồ bơi ứng dụng
  • Tên trang web
  • Thông tin xác thực

Tôi vẫn chưa biết, dưới đây là mã sửa đổi:

  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 

            }

Trừ khi bạn chuyển đổi một thư mục ảo thành một ứng dụng, nó sẽ kế thừa nhóm ứng dụng của trang web. Bạn cũng đang tìm kiếm các thư mục ảo được chuyển đổi thành các ứng dụng cũng như các thư mục ảo "bình thường"?
jscott

$ jscott Tôi đang tìm cách in ra tất cả các thư mục ảo tồn tại trong IIS và thông tin được chỉ định tôi liệt kê ở trên cùng.
dùng38725

Câu trả lời:


12

Bạn viết rằng bạn không thể tìm ra cách lấy lại:

  • Con đường vật lý
    • có thể truy cập trực tiếp thông qua physicalPathnoteproperty
  • Hiệp hội hồ bơi ứng dụng
    • không có ý nghĩa, Ứng dụng được gán cho nhóm ứng dụng, bản thân thư mục thì không
  • Tên trang web
    • Bạn đã biết điều này ( $Site.name)
  • Thông tin xác thực
    • Tôi giả sử bạn chỉ muốn tên người dùng nếu có

Tất cả đều có thể được truy xuất với một số thay đổi nhỏ đối với tập lệnh hiện tại của bạn:

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

Bây giờ bạn có thể xuất $AllVDirssang Xml, Csv hoặc chỉ cần in nó sang máy chủ PowerShell.


2

Cảm ơn bạn @Mathias R. Jessen, tôi đã quên bài đăng này và tôi nên quay lại vì tôi đã tìm ra hầu hết trong số đó. Kịch bản của bạn hoạt động hoàn hảo và đây là của tôi chỉ dành cho S & Gs, không nhận ra tất cả những gì tôi phải làm là gọi các đối tượng và thuộc tính.

$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] "::: is the Virtual Directory" -ForegroundColor Green
                                        Write-Host $webvdirectory.physicalPath   
                                        Write-Host $webvdirectory.userName                                         
                                        Write-Host $webvdirectory.password
                                        Write-Host $webvdirectory.logonMethod
                                    } 
                            #Write-Host $VDir 

            }

Ngoài ra còn có một vấn đề khác và không biết bạn đã có câu trả lời chưa, tôi sẽ gọi thuộc tính thông tin xác thực Đường dẫn vật lý cho các ứng dụng web như thế nào? Tôi không thể in tên người dùng hoặc mật khẩu, nhưng tôi có thể in logonMethod sử dụng cùng một thuộc tính không? Dưới đây là mã của tôi cho các ứng dụng web, nó rất giống với mã thư mục ảo của tôi:

$Websites = Get-ChildItem IIS:\Sites 
    foreach($Site in $Websites)
            { 
             $webapps = Get-WebApplication -Site $Site.name 
                    foreach($webapp in $webAPPS)
                        {
                        Write-Host $webapp.applicationPool
                        Write-Host $WebApp.virtualDirectoryDefaults.userName
                        Write-Host $webapp.virtualDirectoryDefaults.password
                        Write-Host $webapp.virtualDirectoryDefaults.logonMethod
                        $webapp2 = $webapp.path
                        Write-Host $WebApp2.split("/")[-1] "::: is the Web Application" -ForegroundColor Green

                        } 
            }

Tôi cũng đang suy nghĩ nếu tôi nhận được $ Site.userName và $ Site.password, liệu chúng có giống với Ứng dụng Web không?
dùng38725

0

Điều này sẽ tạo ra một mảng chứa Tên trang web, Tên thư mục ảo và Đường dẫn vật lý thư mục ảo.

$SiteVirtualDirectories = @()
$Sites = gci IIS:\Sites
foreach($Site in $Sites)
    {
    $VirtualDirectories = gci "IIS:\Sites\$($Site.Name)" | ?{$_.NodeType -match "virtualDirectory"}
    foreach($VirtualDirectory in $VirtualDirectories)
        {
        $SiteVirtualDirectories += @([pscustomobject]@{Site=$Site.Name;VirtualDirectory=$VirtualDirectory.Name;PhysicalPath=$VirtualDirectory.PhysicalPath})
        }
    }
Write-Host $SiteVirtualDirectories
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.