MENU

كيفية الحصول بدقة على حجم دليل محدد باستخدام PowerShell

PowerShell هو أداة تشغيل آلي قوية لنظام Windows، وهو مفيد للغاية في إدارة نظام الملفات. خاصة عندما يتعلق الأمر بالحصول على حجم دليل، فإنه يوفر معلومات أكثر تفصيلاً ومرونة من استخدام واجهة المستخدم الرسومية. يقدم هذا المقال كيفية الحصول على حجم دليل باستخدام PowerShell، من استخدام الأوامر الأساسية، تحويل وحدات الحجم، إلى الحصول على الحجم الكلي بما في ذلك الدلائل الفرعية، خطوة بخطوة.

الفهرس

استخدام الأوامر الأساسية

أبسط طريقة للحصول على حجم دليل في PowerShell هي دمج أمر Get-ChildItem مع أمر Measure-Object. يسمح هذا الدمج بحساب إجمالي حجم الملف داخل الدليل المحدد.

إليك أمرًا مثاليًا للحصول على حجم دليل محدد (هنا “C:\ExampleDirectory”).

Get-ChildItem C:\ExampleDirectory -Recurse | Measure-Object -Property Length -Sum
  • Get-ChildItem C:\ExampleDirectory -Recurse: يُدرج جميع العناصر داخل الدليل المحدد ودلائله الفرعية.
  • Measure-Object -Property Length -Sum: يجمع حجم (خاصية Length) الملفات المدرجة.

يعيد هذا الأمر الحجم الإجمالي لجميع الملفات داخل الدليل المحدد بالبايت. ومع ذلك، هذه الطريقة لا تشمل حجم الدليل نفسه، ولا تقوم بتحويل وحدات الحجم. ستشرح القسم التالي كيفية تحويل وحدات الحجم.

تحويل وحدات الحجم

حجم الدليل المحصل عليه في PowerShell بالبايت بشكل افتراضي. لتحويله إلى تنسيق أكثر قابلية للقراءة، مثل KB أو MB أو GB، تحتاج إلى إجراء عمليات حسابية. يوضح السكربت أدناه كيفية تحويل وحدات الحجم تلقائيًا إلى التنسيق الأكثر ملاءمة وعرض القيمة.

# الحصول على حجم دليل محدد
$sizeBytes = (Get-ChildItem C:\ExampleDirectory -Recurse | Measure-Object -Property Length -Sum).Sum
# وظيفة لتحويل الوحدات
function Convert-Size($bytes) {
    if ($bytes -gt 1GB) {
        "{0:N2} GB" -f ($bytes / 1GB)
    } elseif ($bytes -gt 1MB) {
        "{0:N2} MB" -f ($bytes / 1MB)
    } elseif ($bytes -gt 1KB) {
        "{0:N2} KB" -f ($bytes / 1KB)
    } else {
        "{0} Bytes" -f $bytes
    }
}
# عرض النتيجة
$convertedSize = Convert-Size -bytes $sizeBytes
Write-Output "الحجم الإجمالي لـ C:\ExampleDirectory هو $convertedSize"

يستخدم هذا السكربت في البداية Get-ChildItem و Measure-Object للحصول على الحجم الكلي للدليل بالبايت. ثم، يتم تمرير هذا الحجم إلى وظيفة Convert-Size لتحويله إلى وحدة قابلة للقراءة. تحدد هذه الوظيفة ما إذا كان الحجم المعطى يناسب أكثر GB أو MB أو KB، وتنسق الحجم في تلك الوحدة. أخيرًا، يتم إخراج رسالة تشمل الحجم المحول.

تتيح لك هذه الطريقة الحصول على نتائج بتنسيق سهل الفهم، حتى للملفات ذات الأحجام الكبيرة.

الحصول على الحجم الكلي بما في ذلك الدلائل الفرعية

عند استخدام PowerShell للحصول على حجم دليل محدد، غالبًا ما يكون من المهم أيضًا حساب حجم الدلائل الفرعية الموجودة داخل ذلك الدليل. يمكن أن يكون حساب الحجم الكلي مفيدًا في إدارة تخزين الخادم أو تنظيم البيانات. توضح الخطوات وقطعة الكود التالية كيفية الحصول على الحجم الكلي لدليل بما في ذلك دلائله الفرعية.

# الدليل المستهدف
$directoryPath = "C:\ExampleDirectory";
# حساب حجم الدليل
$directorySize = Get-ChildItem $directoryPath -Recurse | Where-Object { -not $_.PSIsContainer } | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue
# تحويل وحدة الحجم
function Convert-Size($bytes) {
    switch ($bytes) {
        { $_ -gt 1GB } { "{0:N2} GB" -f ($bytes / 1GB); break }
        { $_ -gt 1MB } { "{0:N2} MB" -f ($bytes / 1MB); break }
        { $_ -gt 1KB } { "{0:N2} KB" -f ($bytes / 1KB); break }
        Default { "$bytes Bytes" }
    }
}
# عرض النتيجة
$convertedSize = Convert-Size -bytes $directorySize.Sum
Write-Output "الحجم الإجمالي لـ $directoryPath هو $convertedSize"

يستخدم هذا السكربت في البداية أمر Get-ChildItem لإدراج جميع الملفات والدلائل الفرعية في الدليل المحدد بشكل تكراري. ثم يقوم بتصفية الملفات فقط باستخدام الأمر Where-Object ويحسب حجمها الإجمالي بأمر Measure-Object. يستخدم معامل -ErrorAction SilentlyContinue لمنع السكربت من التوقف إذا حدث خطأ بسبب أسباب مثل عدم وجود حقوق الوصول.

بعد ذلك، يتم استخدام وظيفة Convert-Size المذكورة سابقًا لتحويل الحجم الكلي المحصل عليه بالبايت إلى تنسيق أكثر قابلية للقراءة. أخيرًا، يتم إخراج مسار الدليل مع الحجم المحول، مما يعرض بوضوح الحجم الكلي.

تجعل هذه الطريقة من السهل فهم الحجم الكلي للدلائل التي تحتوي على مجموعات بيانات كبيرة أو العديد من الدلائل الفرعية.

حساب حجم أنواع ملفات محددة

قد يكون حساب حجم أنواع ملفات محددة مفيدًا لتنظيم البيانات أو تحسين التخزين. على سبيل المثال، قد تشغل ملفات السجل أو ملفات الصور مساحة كبيرة، ومعرفة حجم هذه الملفات يمكن أن يساعدك في النظر في حذف أو أرشفة الملفات غير الضرورية. فيما يلي كيفية استخدام PowerShell لحساب الحجم الإجمالي لأنواع ملفات محددة (مثل ملفات “.log”).

# الدليل المستهدف
$directoryPath = "C:\ExampleDirectory";
# نوع الملف المستهدف
$fileExtension = "*.log";
# حساب حجم نوع الملف
$fileSize = Get-ChildItem $directoryPath -Filter $fileExtension -Recurse | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue
# وظيفة تحويل الحجم
function Convert-Size($bytes) {
    switch ($bytes) {
        { $_ -gt 1GB } { "{0:N2} GB" -f ($bytes / 1GB); break }
        { $_ -gt 1MB } { "{0:N2} MB" -f ($bytes / 1MB); break }
        { $_ -gt 1KB } { "{0:N2} KB" -f ($bytes / 1KB); break }
        Default { "$bytes Bytes" }
    }
}
# عرض النتيجة
$convertedSize = Convert-Size -bytes $fileSize.Sum
Write-Output "الحجم الإجمالي لملفات $fileExtension في $directoryPath هو $convertedSize"

يستخدم هذا الكود الأمر Get-ChildItem للبحث بشكل تكراري عن الملفات بالامتداد المحدد. يضمن المعامل -Filter استهداف ملفات من نوع محدد فقط. ثم، يُستخدم الأمر Measure-Object لحساب الحجم الإجمالي لهذه الملفات، والذي يتم بعد ذلك تحويله إلى وحدة قابلة للقراءة بواسطة وظيفة Convert-Size المذكورة أعلاه.

تتيح لك هذه الطريقة فهم دقيق لكمية المساحة التي يشغلها نوع ملف محدد على التخزين، مما يساعد في قرارات إدارة التخزين.

إخراج النتائج إلى ملف

قد يكون حفظ نتائج تحليل حجم الدليل في ملف مفيدًا لإنشاء تقارير أو للرجوع إليها في المستقبل. تقدم هذه القسم كيفية استخدام PowerShell لإخراج المعلومات حول الأحجام المحصلة للدلائل إلى ملف نصي أو ملف CSV. يجعل هذا من السهل تصور البيانات ومشاركتها.

الإخراج إلى ملف نصي

# الدليل المستهدف
$directoryPath = "C:\ExampleDirectory";
# مسار ملف الإخراج
$outputFilePath = "C:\directorySizeReport.txt";
# الحصول على حجم الدليل
$sizeBytes = (Get-ChildItem $directoryPath -Recurse | Measure-Object -Property Length -Sum).Sum
# تحويل وحدات الحجم
$convertedSize = Convert-Size -bytes $sizeBytes
# كتابة النتيجة إلى ملف
"الحجم الإجمالي لـ $directoryPath هو $convertedSize" | Out-File $outputFilePath

الإخراج إلى ملف CSV

الإخراج إلى ملف CSV مفيد بشكل خاص إذا كنت ترغب في مقارنة أحجام الدلائل المتعددة. يحسب المثال أدناه أحجام الدلائل المتعددة ويحفظ كل نتيجة في ملف CSV.

# قائمة الدلائل المستهدفة
$directoryPaths = @("C:\ExampleDirectory", "D:\AnotherDirectory");
# مسار ملف CSV للإخراج
$outputCsvPath = "C:\directorySizeReport.csv";
# تهيئة مصفوفة النتائج
$results = @()

foreach ($path in $directoryPaths) {
    $sizeBytes = (Get-ChildItem $path -Recurse | Measure-Object -Property Length -Sum).Sum
    $convertedSize

 = Convert-Size -bytes $sizeBytes
    $results += [PSCustomObject]@{
        "Directory" = $path
        "Size" = $convertedSize
    }
}

# إخراج النتائج إلى CSV
$results | Export-Csv $outputCsvPath -NoTypeInformation

تجعل هذه السكربتات من السهل توثيق وحفظ نتائج تحليل أحجام الدلائل. تعزز وظيفة الإخراج إلى ملفات نصية أو CSV من شفافية مهام الإدارة وتدعم تحليل البيانات في المستقبل أو إنشاء التقارير.

التطبيق: كيفية مراقبة أحجام الدلائل بانتظام باستخدام السكربتات

مراقبة حجم الدلائل بانتظام مهم للكشف المبكر عن زيادات مفاجئة في البيانات ومنع مشاكل السعة مع التخزين. من خلال دمج سكربتات PowerShell مع المهام المجدولة، يمكن أتمتة هذه العملية. فيما يلي كيفية إنشاء سكربت يراقب بانتظام أحجام الدلائل ويصدر تحذيرًا إذا تجاوز الحجم المحدد.

الخطوة 1: إنشاء سكربت PowerShell

أولاً، أنشئ سكربت PowerShell يفحص حجم دليل ويصدر تحذيرًا إذا تجاوز حدًا معينًا.

# تحديد الدليل المستهدف والحد الأقصى
$directoryPath = "C:\ExampleDirectory";
$thresholdSizeGB = 10

# الحصول على حجم الدليل ومقارنته بالحد
$sizeBytes = (Get-ChildItem $directoryPath -Recurse | Measure-Object -Property Length -Sum).Sum
$sizeGB = $sizeBytes / 1GB

if ($sizeGB -gt $thresholdSizeGB) {
    Write-Warning "تحذير: حجم $directoryPath تجاوز الحد الأقصى $thresholdSizeGB GB. الحجم الحالي هو $sizeGB GB.";
}

الخطوة 2: إضافة السكربت إلى المهام المجدولة

بعد ذلك، أضف السكربت المُنشأ إلى مهام Windows المجدولة لتشغيله بانتظام.

  1. افتح “مجدول المهام” واختر “إنشاء مهمة أساسية”.
  2. أعطِ المهمة اسمًا ووصفًا.
  3. حدد المُحفز لتقرير كم مرة يجب تشغيل السكربت (مثل، يوميًا، أسبوعيًا).
  4. في خطوة “الإجراء”، اختر “بدء برنامج” وحدد مسار السكربت PowerShell.
  5. اضبط الإعدادات الأخرى حسب الضرورة واحفظ المهمة.

بهذه الطريقة، سيتم إصدار تحذير تلقائيًا إذا تجاوز حجم الدليل المحدد الحد المُعين. هذا يساعد على اكتشاف زيادات مفاجئة في البيانات أو نقص السعة غير المتوقع مبكرًا واتخاذ الإجراء المناسب.

الخلاصة

من خلال استخدام PowerShell، من الممكن قياس حجم دليل محدد بدقة وإجراء إدارة التخزين والمراقبة بناءً على تلك البيانات. قدم هذا المقال مجموعة واسعة من التقنيات، من استخدام الأوامر الأساسية، تحويل وحدات الحجم، حساب الحجم الكلي بما في ذلك الدلائل الفرعية، حساب حجم أنواع ملفات محددة، إخراج النتائج إلى ملف، إلى مراقبة أحجام الدلائل بانتظام باستخدام السكربتات. من خلال الجمع بين هذه الطرق بشكل مناسب، يمكن تحقيق إدارة بيانات أكثر فعالية. تم تأكيد مجددًا أن PowerShell هو أداة قوية لمواجهة التحديات المرتبطة بزيادة البيانات.

الفهرس