ค้นหาเว็บไซต์

PowerShell: วิธีรับขนาดโฟลเดอร์


ในฐานะผู้ดูแลระบบหรือผู้เชี่ยวชาญด้านไอที จำเป็นอย่างยิ่งที่จะต้องวัดขนาดของไดเร็กทอรีหรือโฟลเดอร์บนคอมพิวเตอร์หรือเซิร์ฟเวอร์ของคุณ จัดสรรพื้นที่ดิสก์ และระบุไดเร็กทอรีที่ใช้พื้นที่จัดเก็บข้อมูลอย่างมีประสิทธิภาพได้อย่างมีประสิทธิภาพ แม้ว่า File Explorer จะให้ภาพรวมพื้นฐานของขนาดโฟลเดอร์ แต่ PowerShell ก็มอบความสามารถขั้นสูงเพิ่มเติมสำหรับการวิเคราะห์ขนาดโฟลเดอร์และสถานการณ์อัตโนมัติที่แม่นยำและละเอียดยิ่งขึ้น ในบทความนี้ เราจะสำรวจคำสั่งและเคล็ดลับต่างๆ ของ PowerShell ที่จะช่วยให้คุณรับขนาดโฟลเดอร์ได้อย่างง่ายดาย

ข้อมูลเบื้องต้นเกี่ยวกับ PowerShell และความสามารถในการรับขนาดโฟลเดอร์

PowerShell คือเชลล์บรรทัดคำสั่งและภาษาสคริปต์ที่สร้างขึ้นบนเฟรมเวิร์ก .NET ด้วย PowerShell คุณสามารถทำงานด้านการดูแลระบบอัตโนมัติ จัดการการกำหนดค่าระบบ และเข้าถึงส่วนประกอบและข้อมูลของระบบได้ PowerShell มอบชุดคำสั่งอันทรงพลังที่สามารถช่วยให้คุณรับขนาดโฟลเดอร์ได้ภายในไม่กี่วินาที ทำให้มีเวลาเพิ่มขึ้นและทำให้งานมีประสิทธิภาพมากขึ้น ในคู่มือที่ครอบคลุมนี้ เราจะสำรวจเทคนิคต่างๆ ของ PowerShell เพื่อให้ได้ขนาดโฟลเดอร์ที่แม่นยำ เราจะเจาะลึกการใช้ cmdlets หลัก เช่น Get-ChildItem และ Measure-Object เพื่อดึงข้อมูลและคำนวณขนาดโฟลเดอร์

คุณสามารถใช้ PowerShell เพื่อรับขนาดของโฟลเดอร์ รวมถึงโฟลเดอร์ย่อยในหน่วย GB หรือ MB และเพื่อแสดงรายการขนาดของไดเรกทอรีหรือโฟลเดอร์

คำสั่ง PowerShell พื้นฐานสำหรับการรับขนาดโฟลเดอร์

วิธีที่ง่ายที่สุดในการเพิ่มขนาดของโฟลเดอร์ใน PowerShell คือการใช้ cmdlet Get-ChildItem พร้อมกับพารามิเตอร์ -Path และไปป์เอาต์พุตของ Get-ChildItem cmdlet ไปที่ Measure-Object cmdlet ระบุคุณสมบัติ "ความยาว" นี่คือตัวอย่าง:


Get-ChildItem -Path "C:\Temp" | Measure-Object -Property Length -Sum

คำสั่งนี้จะส่งคืนขนาดของโฟลเดอร์ C:\Temp และไฟล์ทั้งหมดในหน่วยไบต์ cmdlet Measure-Object พร้อมพารามิเตอร์ -Property และสวิตช์ -Sum ใช้ในการคำนวณขนาดรวมของโฟลเดอร์และโฟลเดอร์ย่อยทั้งหมด . คุณยังสามารถใช้นามแฝง GCI สำหรับ Get-ChildItem cmdlet ได้

รับขนาดโฟลเดอร์รวมถึงโฟลเดอร์ย่อยและส่งออกเป็น CSV โดยใช้ PowerShell

หากคุณต้องการรวมขนาดของโฟลเดอร์ย่อยในการคำนวณขนาดโฟลเดอร์ คุณสามารถใช้พารามิเตอร์ -Recurse กับ Get-ChildItem cmdlet พารามิเตอร์นี้เปิดใช้งานการค้นหาแบบเรียกซ้ำ ทำให้ PowerShell สามารถดึงเนื้อหาของโฟลเดอร์ย่อยได้เช่นกัน นี่คือตัวอย่าง:


(Get-ChildItem -Path C:\Temp -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB

คำสั่งนี้จะส่งคืนขนาดของโฟลเดอร์ C:\Temp และโฟลเดอร์ย่อยทั้งหมดเป็น MB หากต้องการขนาดเป็น GB เพียงเปลี่ยน / 1MB เป็น / 1GB ลองส่งออกโฟลเดอร์และขนาดโฟลเดอร์ย่อยทั้งหมดเป็นไฟล์ CSV เพื่อการวิเคราะห์ที่ดีขึ้นได้อย่างไร


#Parameters
$path = "C:\Temp"
$outputFile ="C:\Temp\FolderSize.csv"

#Get all Folders, Sub-Folders recursively
$folders = Get-ChildItem -Path $Path -Directory -Recurse

#Loop through each folder to Find the size
$FolderSizes = foreach ($folder in $folders) {
    $size = (Get-ChildItem -Path $folder.FullName -File -Recurse | Measure-Object -Property Length -Sum).Sum
    $sizeInMB = $size / 1MB

    #Collect Data
    [PSCustomObject]@{
        FolderName = $folder.FullName
        SizeInMB = [Math]::Round($sizeInMB,2)
    }
}
#Export the Result to CSV
$FolderSizes | Format-table
$FolderSizes | Export-Csv -Path $outputFile -NoTypeInformation

การปรับการคำนวณขนาดสำหรับโฟลเดอร์ย่อย

เมื่อรวมไดเรกทอรีย่อยในการคำนวณขนาด โปรดทราบว่าผลลัพธ์จะเป็นขนาดรวมของไฟล์และโฟลเดอร์ทั้งหมด อย่างไรก็ตาม หากคุณต้องการได้รับขนาดของแต่ละโฟลเดอร์ย่อยแยกกันพร้อมกับขนาดทั้งหมด คุณสามารถแก้ไขคำสั่งได้เล็กน้อย


Get-ChildItem -Recurse -Path C:\Temp | ForEach-Object {
    $size = (Get-ChildItem -File -Path $_.FullName | Measure-Object -Property Length -Sum).Sum
    [PSCustomObject]@{
        Folder = $_.FullName
        Size = $size
    }
}

แทนที่ C:\Temp ด้วยเส้นทางจริงของโฟลเดอร์ที่คุณต้องการวิเคราะห์ คำสั่งนี้จะแสดงขนาดของแต่ละโฟลเดอร์ย่อยพร้อมกับเส้นทางแบบเต็ม

PowerShell สำหรับรับขนาดโฟลเดอร์เป็นเมกะไบต์หรือกิกะไบต์

ตามค่าเริ่มต้น ขนาดที่คำนวณโดยใช้ cmdlet วัด-วัตถุจะแสดงเป็นไบต์ หากคุณต้องการแปลงขนาดเป็นรูปแบบที่มนุษย์สามารถอ่านได้มากขึ้น เช่น เมกะไบต์ (MB) หรือกิกะไบต์ (GB) เราสามารถหารผลรวมด้วยปัจจัยการแปลงที่เหมาะสม หากต้องการเพิ่มขนาดโฟลเดอร์เป็น GB คุณสามารถใช้คำสั่งต่อไปนี้:

หากต้องการแสดงขนาดเป็นเมกะไบต์ ให้หารผลรวมด้วย 1,048,576 (1 MB เป็นไบต์):


(Get-ChildItem -File -Path C:\FolderPath | Measure-Object -Property Length -Sum).Sum / 1MB

ในทำนองเดียวกัน หากต้องการให้ได้ขนาดเป็น GB ให้แบ่งเอาต์พุตเป็น 1 GB


[math]::Round((Get-ChildItem -Path C:\Temp -Recurse | Measure-Object -Property Length -Sum).Sum / 1GB,2)

คำสั่งนี้จะส่งคืนขนาดของโฟลเดอร์ C:\Temp และโฟลเดอร์ย่อยทั้งหมดเป็น GB นอกจากนี้ เรายังใช้ฟังก์ชัน [math]::Round() เพื่อให้ได้ทศนิยมสองตำแหน่ง

PowerShell สำหรับแสดงรายการขนาดโฟลเดอร์

คุณยังสามารถใช้ PowerShell เพื่อแสดงขนาดของไดเรกทอรีหรือโฟลเดอร์บนคอมพิวเตอร์หรือเซิร์ฟเวอร์ของคุณได้ นี่คือตัวอย่าง:


Get-ChildItem -Path C:\ -Directory | ForEach-Object { $_.FullName + ": " + ((Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB) + " MB" }

คำสั่งนี้จะแสดงขนาดของไดเรกทอรีหรือโฟลเดอร์ทั้งหมดใน C:\ ของฮาร์ดไดรฟ์ของคุณในหน่วย MB

รับขนาดของโฟลเดอร์โดยไม่รวมไฟล์บางประเภท

หากคุณต้องการทราบขนาดของโฟลเดอร์และโฟลเดอร์ย่อย แต่ยกเว้นบางไฟล์ คุณสามารถใช้คำสั่งต่อไปนี้:


(Get-ChildItem -Path C:\Logs -Recurse -Exclude *.log | Measure-Object -Property Length -Sum).Sum / 1MB

คำสั่งนี้จะส่งคืนขนาดของโฟลเดอร์ C:\Logs และโฟลเดอร์ย่อยทั้งหมด โดยไม่รวมไฟล์ทั้งหมดที่มีนามสกุล .log

การกรองไฟล์ตามประเภท

หากคุณต้องการคำนวณขนาดของไฟล์ประเภทใดประเภทหนึ่งภายในไดเร็กทอรีที่ระบุ คุณสามารถกรองไฟล์โดยใช้ Get-ChildItem cmdlet ก่อนที่จะดำเนินการคำนวณขนาด ตัวอย่างเช่น หากต้องการคำนวณขนาดเฉพาะไฟล์ PDF ในโฟลเดอร์ ให้ใช้คำสั่งต่อไปนี้:


(Get-ChildItem -File -Path C:\Reports -Filter *.pdf | Measure-Object -Property Length -Sum).Sum

แทนที่ C:\Reports ด้วยเส้นทางจริงของโฟลเดอร์ที่คุณต้องการวิเคราะห์ และแทนที่ *.pdf ด้วยนามสกุลไฟล์ที่ต้องการ คุณสามารถกรองไฟล์เพิ่มเติมตามคุณลักษณะเฉพาะ เช่น “วันที่สร้าง” ด้วยความช่วยเหลือของ cmdlet “Where-Object” และคำนวณขนาด เช่น.


$Path = "C:\Temp"
$StartDate = (Get-Date).AddDays(-7)

#Get All Files created in the past 7 days
$Files = Get-ChildItem -Path $path -File -Recurse | Where-Object { $_.CreationTime -ge $startDate }

$TotalSize = ($Files | Measure-Object -Property Length -Sum).Sum
$totalSizeInMB = $totalSize / 1MB

Write-Host "Total Size of Files Created in the Past 7 Days: $totalSizeInMB MB"

ข้อผิดพลาดทั่วไปและคำแนะนำในการแก้ปัญหา

หากคุณพบข้อผิดพลาดเมื่อใช้ PowerShell เพื่อรับขนาดโฟลเดอร์ ต่อไปนี้เป็นเคล็ดลับการแก้ปัญหาบางประการ:

  • ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ที่ถูกต้องในการเข้าถึงโฟลเดอร์ที่คุณพยายามวัด เรียกใช้สคริปต์ PowerShell ในฐานะผู้ดูแลระบบ มิฉะนั้น คุณจะได้รับข้อผิดพลาด “Get-ChildItem : การเข้าถึงเส้นทาง 'C:\Temp\Reports”
  • ตรวจสอบว่าคุณใช้เส้นทางที่ถูกต้องไปยังโฟลเดอร์
  • ตรวจสอบให้แน่ใจว่าคุณใช้ไวยากรณ์ที่ถูกต้องสำหรับคำสั่ง ตรวจสอบตัวอย่างในบทความนี้และศึกษาเอกสารประกอบของ PowerShell หากคุณไม่แน่ใจ

การเปรียบเทียบวิธี PowerShell และเครื่องมือทางเลือก

แม้ว่า PowerShell จะมอบความสามารถอันทรงพลังสำหรับการวิเคราะห์ขนาดโฟลเดอร์ การพิจารณาข้อดีข้อเสียของการใช้วิธีการ PowerShell และสำรวจเครื่องมือทางเลือกสำหรับกรณีการใช้งานเฉพาะก็เป็นสิ่งสำคัญ

ข้อดีข้อเสียของวิธี PowerShell

ข้อดี :

  1. ความยืดหยุ่นและการปรับแต่ง: PowerShell ช่วยให้สามารถปรับแต่งได้อย่างกว้างขวางและมีความสามารถในการเขียนสคริปต์ ทำให้เหมาะสำหรับสถานการณ์การวิเคราะห์ขนาดโฟลเดอร์ที่ซับซ้อน
  2. บูรณาการกับคำสั่ง PowerShell อื่นๆ: PowerShell cmdlets สามารถใช้ร่วมกับคำสั่ง PowerShell อื่นๆ เพื่อทำงานอัตโนมัติและดำเนินการวิเคราะห์ขั้นสูง
  3. โมดูล PowerShell ในตัว: PowerShell มีโมดูลและ cmdlets ในตัวที่หลากหลาย เช่น Measure-Object และ Get-ChildItem ที่ให้คุณลักษณะที่มีประสิทธิภาพสำหรับการวิเคราะห์ขนาดโฟลเดอร์

จุดด้อย :

  1. เส้นโค้งการเรียนรู้: PowerShell มีเส้นโค้งการเรียนรู้ โดยเฉพาะอย่างยิ่งสำหรับผู้เริ่มต้นที่อาจพบว่าเป็นเรื่องยากที่จะเข้าใจไวยากรณ์และความแตกต่างของสคริปต์ PowerShell
  2. ข้อจำกัดของนโยบายการดำเนินการ: นโยบายการดำเนินการของ PowerShell อาจจำกัดการทำงานของสคริปต์และคำสั่ง โดยต้องมีการกำหนดค่าเพิ่มเติมเพื่อเรียกใช้คำสั่งบางอย่าง
  3. ความซับซ้อนสำหรับงานง่ายๆ: สำหรับการวิเคราะห์ขนาดโฟลเดอร์อย่างตรงไปตรงมา การใช้ PowerShell cmdlets อาจเกี่ยวข้องกับการเขียนและดำเนินการหลายคำสั่ง ซึ่งอาจใช้เวลานาน

สำรวจเครื่องมือทางเลือกสำหรับการวิเคราะห์ขนาดโฟลเดอร์

แม้ว่า PowerShell จะเป็นเครื่องมืออเนกประสงค์สำหรับการวิเคราะห์ขนาดโฟลเดอร์ แต่เครื่องมือทางเลือกสามารถมอบอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้และฟังก์ชันการทำงานเพิ่มเติมได้มากขึ้น ต่อไปนี้เป็นเครื่องมือทางเลือกบางส่วนที่ควรค่าแก่การสำรวจ:

  1. TreeSize: TreeSize เป็นเครื่องมือของบุคคลที่สามยอดนิยมที่นำเสนอขนาดโฟลเดอร์ด้วยภาพและมีคุณสมบัติเพิ่มเติม เช่น การค้นหาไฟล์และการตรวจจับไฟล์ที่ซ้ำกัน
  2. WinDirStat: WinDirStat เป็นอีกหนึ่งเครื่องมือที่ใช้กันอย่างแพร่หลายซึ่งให้การแสดงขนาดโฟลเดอร์แบบกราฟิก และช่วยให้ผู้ใช้ระบุไฟล์และโฟลเดอร์ที่ใช้พื้นที่เก็บข้อมูลสูงได้อย่างง่ายดาย
  3. Folder Size Explorer: Folder Size Explorer เป็นเครื่องมือน้ำหนักเบาที่ให้มุมมองโดยละเอียดของขนาดโฟลเดอร์ ช่วยให้ผู้ใช้สามารถวิเคราะห์การใช้พื้นที่ดิสก์ได้อย่างมีประสิทธิภาพ

เมื่อเลือกเครื่องมือสำรอง ให้พิจารณาปัจจัยต่างๆ เช่น ความง่ายในการใช้งาน คุณลักษณะเฉพาะที่จำเป็น และความเข้ากันได้กับระบบปฏิบัติการของคุณ

บทสรุป

ในคู่มือที่ครอบคลุมนี้ เราได้สำรวจวิธีการและเทคนิคต่างๆ เพื่อรับขนาดโฟลเดอร์โดยใช้ PowerShell เราเรียนรู้วิธีใช้ cmdlets หลัก เช่น Get-ChildItem และ Measure-Object เพื่อคำนวณขนาดโฟลเดอร์และแสดงในรูปแบบที่มนุษย์สามารถอ่านได้อย่างแม่นยำ กรอบงาน WMI และ NET ยังเสนอวิธีรับขนาดโฟลเดอร์โดยใช้ PowerShell อย่างไรก็ตาม วิธีที่มีประสิทธิภาพและรวดเร็วยิ่งขึ้นคือการใช้วิธี PowerShell ดั้งเดิม ไม่ว่าคุณจะเลือกใช้ PowerShell cmdlets หรือเครื่องมือทางเลือก การทำความเข้าใจวิธีดึงข้อมูลและวิเคราะห์ขนาดโฟลเดอร์ถือเป็นสิ่งสำคัญสำหรับการจัดการพื้นที่ดิสก์อย่างมีประสิทธิภาพ

เมื่อปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับการแก้ปัญหาที่มีให้ คุณจะสามารถปรับการวิเคราะห์ขนาดโฟลเดอร์ให้เหมาะสม และรับข้อมูลเชิงลึกอันมีค่าเกี่ยวกับพื้นที่จัดเก็บไฟล์และโฟลเดอร์ของคุณ ด้วยความรู้ที่ได้รับจากคู่มือนี้ คุณจะมีความพร้อมที่จะมีความเชี่ยวชาญในการวัดและจัดการขนาดโฟลเดอร์โดยใช้ PowerShell

บทความที่เกี่ยวข้อง