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
ข้อดี :
- ความยืดหยุ่นและการปรับแต่ง: PowerShell ช่วยให้สามารถปรับแต่งได้อย่างกว้างขวางและมีความสามารถในการเขียนสคริปต์ ทำให้เหมาะสำหรับสถานการณ์การวิเคราะห์ขนาดโฟลเดอร์ที่ซับซ้อน
- บูรณาการกับคำสั่ง PowerShell อื่นๆ: PowerShell cmdlets สามารถใช้ร่วมกับคำสั่ง PowerShell อื่นๆ เพื่อทำงานอัตโนมัติและดำเนินการวิเคราะห์ขั้นสูง
- โมดูล PowerShell ในตัว: PowerShell มีโมดูลและ cmdlets ในตัวที่หลากหลาย เช่น Measure-Object และ Get-ChildItem ที่ให้คุณลักษณะที่มีประสิทธิภาพสำหรับการวิเคราะห์ขนาดโฟลเดอร์
จุดด้อย :
- เส้นโค้งการเรียนรู้: PowerShell มีเส้นโค้งการเรียนรู้ โดยเฉพาะอย่างยิ่งสำหรับผู้เริ่มต้นที่อาจพบว่าเป็นเรื่องยากที่จะเข้าใจไวยากรณ์และความแตกต่างของสคริปต์ PowerShell
- ข้อจำกัดของนโยบายการดำเนินการ: นโยบายการดำเนินการของ PowerShell อาจจำกัดการทำงานของสคริปต์และคำสั่ง โดยต้องมีการกำหนดค่าเพิ่มเติมเพื่อเรียกใช้คำสั่งบางอย่าง
- ความซับซ้อนสำหรับงานง่ายๆ: สำหรับการวิเคราะห์ขนาดโฟลเดอร์อย่างตรงไปตรงมา การใช้ PowerShell cmdlets อาจเกี่ยวข้องกับการเขียนและดำเนินการหลายคำสั่ง ซึ่งอาจใช้เวลานาน
สำรวจเครื่องมือทางเลือกสำหรับการวิเคราะห์ขนาดโฟลเดอร์
แม้ว่า PowerShell จะเป็นเครื่องมืออเนกประสงค์สำหรับการวิเคราะห์ขนาดโฟลเดอร์ แต่เครื่องมือทางเลือกสามารถมอบอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้และฟังก์ชันการทำงานเพิ่มเติมได้มากขึ้น ต่อไปนี้เป็นเครื่องมือทางเลือกบางส่วนที่ควรค่าแก่การสำรวจ:
- TreeSize: TreeSize เป็นเครื่องมือของบุคคลที่สามยอดนิยมที่นำเสนอขนาดโฟลเดอร์ด้วยภาพและมีคุณสมบัติเพิ่มเติม เช่น การค้นหาไฟล์และการตรวจจับไฟล์ที่ซ้ำกัน
- WinDirStat: WinDirStat เป็นอีกหนึ่งเครื่องมือที่ใช้กันอย่างแพร่หลายซึ่งให้การแสดงขนาดโฟลเดอร์แบบกราฟิก และช่วยให้ผู้ใช้ระบุไฟล์และโฟลเดอร์ที่ใช้พื้นที่เก็บข้อมูลสูงได้อย่างง่ายดาย
- Folder Size Explorer: Folder Size Explorer เป็นเครื่องมือน้ำหนักเบาที่ให้มุมมองโดยละเอียดของขนาดโฟลเดอร์ ช่วยให้ผู้ใช้สามารถวิเคราะห์การใช้พื้นที่ดิสก์ได้อย่างมีประสิทธิภาพ
เมื่อเลือกเครื่องมือสำรอง ให้พิจารณาปัจจัยต่างๆ เช่น ความง่ายในการใช้งาน คุณลักษณะเฉพาะที่จำเป็น และความเข้ากันได้กับระบบปฏิบัติการของคุณ
บทสรุป
ในคู่มือที่ครอบคลุมนี้ เราได้สำรวจวิธีการและเทคนิคต่างๆ เพื่อรับขนาดโฟลเดอร์โดยใช้ PowerShell เราเรียนรู้วิธีใช้ cmdlets หลัก เช่น Get-ChildItem และ Measure-Object เพื่อคำนวณขนาดโฟลเดอร์และแสดงในรูปแบบที่มนุษย์สามารถอ่านได้อย่างแม่นยำ กรอบงาน WMI และ NET ยังเสนอวิธีรับขนาดโฟลเดอร์โดยใช้ PowerShell อย่างไรก็ตาม วิธีที่มีประสิทธิภาพและรวดเร็วยิ่งขึ้นคือการใช้วิธี PowerShell ดั้งเดิม ไม่ว่าคุณจะเลือกใช้ PowerShell cmdlets หรือเครื่องมือทางเลือก การทำความเข้าใจวิธีดึงข้อมูลและวิเคราะห์ขนาดโฟลเดอร์ถือเป็นสิ่งสำคัญสำหรับการจัดการพื้นที่ดิสก์อย่างมีประสิทธิภาพ
เมื่อปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับการแก้ปัญหาที่มีให้ คุณจะสามารถปรับการวิเคราะห์ขนาดโฟลเดอร์ให้เหมาะสม และรับข้อมูลเชิงลึกอันมีค่าเกี่ยวกับพื้นที่จัดเก็บไฟล์และโฟลเดอร์ของคุณ ด้วยความรู้ที่ได้รับจากคู่มือนี้ คุณจะมีความพร้อมที่จะมีความเชี่ยวชาญในการวัดและจัดการขนาดโฟลเดอร์โดยใช้ PowerShell

