Điểm:1

Truy xuất kích thước thư mục mẹ cho từng trang IIS

lá cờ cn

Tôi đang cố gắng lấy danh sách các trang web từ IIS (8.5) để bao gồm kích thước thư mục nhưng không thể làm việc này.

Dưới đây là mã hiện tại tôi có đang hoạt động mà không có kích thước

Quản trị web mô-đun nhập # Bắt buộc đối với Powershell v2 trở xuống  

$filepath = C:\sites.csv
$sites = lấy trang web

foreach($site trong $sites) {
    $name = $site.name
    $bindings = $site.bindings.collection.bindinginformation.split(":")
    $ip = $bindings[0]
    $port = $bindings[1]
    $hostHeader = $bindings[2]
    "$name,$hostHeader,$ip,$port" | ngoài máy chủ
    "$name,$hostHeader,$ip,$port" | ngoài tệp $filePath -Nối
}

Sau đó tôi đã cố gắng thêm vào dòng này

$size = Get-ChildItem -Directory -Force|ForEach {"{0,-30} {1,-30} {2:N2}MB" -f $_.Name, $_.LastWriteTime, ((Get-ChildItem $_ -Recurse|Measure-Object -Property Length -Sum -ErrorAction Stop).Sum/1MB)}

nhưng điều đó cũng không hoạt động.

sau đó tôi đã cố gắng với

$size = Get-ChildItem $name + "\folderName\" | Measure-Object -Property Chiều dài -sum

ngày càng gần hơn nhưng tôi nghĩ cú pháp của tôi sai với $name + "\tên thư mục\" khi tôi nhận được một loạt lỗi. Tôi nói điều này là gần vì nó có đường dẫn đến thư mục nhưng nó không tồn tại. Thư mục sẽ tồn tại nếu tôi có thể thêm tên thư mục vào tên $ Biến đổi?

Tôi làm sai ở đâu? Hoặc làm cách nào tôi có thể truy xuất thư mục gốc của từng kích thước thư mục trang web?

JosefZ avatar
lá cờ th
Có thể là `Get-ChildItem $site.physicalPath`?
Điểm:0
lá cờ cn

Trong thử nghiệm của tôi, Đường dẫn vật lý thuộc tính có thể chứa biến định dạng cmd.exe %SystemDrive%.

Khi điều này xảy ra, bạn có thể sử dụng đường dẫn vật lý và trích xuất tên biến môi trường và đường dẫn còn lại bằng biểu thức chính quy. Kéo ra giá trị của biến và xây dựng đường dẫn.

$filepath = 'C:\sites.csv'
$sites = lấy trang web

foreach($site trong $sites) {
    if($site.physicalPath -match '^%(.+)%(.+)$'){
        $sitedir = Đường dẫn tham gia (Lấy nội dung "env:$($matches.1)") $matches.2
        Get-ChildItem -LiteralPath $sitedir
    }
}

Nếu bạn xác nhận điều này liệt kê chính xác các tệp cho từng trang web, thì có vẻ như bạn đã tìm ra phần đo lường.

Một vài gợi ý khác. Đầu tiên, tôi khuyên bạn nên Xuất-Csv thay vì Out-File.

Tiếp theo, thay vì mở tệp và nối thêm nhiều lần (chậm), bạn có thể thu thập tất cả các kết quả rồi viết chúng.

$results = foreach($site in $sitelist){
    ... mã số ...
}

$kết quả | Out-File $filepath

Hoặc bạn có thể sử dụng ForEach-Object và tận dụng lợi thế của đường ống.

$sitelist | ForEach-Object {
    ... mã số ...
} | Out-File $filepath

Một lợi ích phụ của ForEach-Object-OutBiến tham số cho phép bạn nắm bắt đầu ra trong một biến (đó là loại Lập danh sách) và xem đầu ra (hoặc chuyển nó sang nhiều lệnh hơn.)

Xem xét các đề xuất của tôi, tôi sẽ thử.

$filepath = 'C:\sites.csv'
$sites = lấy trang web

$trang web | ForEach-Object {

    $ip, $port, $hostHeader = $_.bindings.collection.bindinginformation.split(":")

    $path = if($_.physicalPath -match '^%(.+)%(.+)$'){
        Đường dẫn tham gia (Lấy nội dung "env:$($matches.1)") $matches.2
    }
    khác{
        $_.đường dẫn vật lý
    }

    $size = (Get-ChildItem $path -Recurse | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1MB

    [PSCustomObject]@{
        Tên = $_.tên
        Đường dẫn đầy đủ = $path
        IP = $ip
        Cổng = cổng $
        HostHeader = $hostHeader
        Kích thướcMB = $size
   }
} -OutVariable kết quả

$kết quả | Xuất-Csv $filepath -NoTypeInformation
lá cờ cn
Cảm ơn nhưng kích thước tệp sử dụng ở trên không được thông qua. Nó lấy không có giá trị?
Doug Maurer avatar
lá cờ cn
tôi đã cập nhật bài viết của mình

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.