كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا

28 مايو 2021 35296 الآراء تحقق بوويرشيل من وجود الملف

في منطقة S هذه ، يعلمك Victor كيفية استخدام PowerShell للتحقق من وجود ملف. يغطي الدليل أمثلة متعددة لاستخدام PowerShell للتحقق من وجود ملف.





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



تصفح مواضيع المنشور

طلاء مايكروسوفت لالروبوت

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا بدون متغير

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا بدون متغير

يعلمك هذا القسم كيفية الجري مسار الاختبار أمر بدون متغير.



يمكنك تشغيل Test-Path كأمر مستقل. علاوة على ذلك ، يمكنك أيضًا دمج الأمر مع ملف إذا بيان لأداء مهام إضافية بناءً على نتيجة مسار الاختبار يأمر.



كيفية تشغيل مسار الاختبار مباشرة بدون متغير

يعلمك هذا القسم الفرعي كيفية تشغيل مسار الاختبار بمفرده (بدون استخدام النتيجة في ملف إذا بيان).

لدي ملف يسمى Operations.txt في E: Reports.



كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا

للتحقق مما إذا كان الملف موجودًا ، أدخل الأمر أدناه في PowerShell واضغط على Enter



Test-Path -Path E:
eportsprocesses.txt

عندما ضغطت ، عاد PowerShell صحيح ، مما يعني أن الملف موجود.

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا

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

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا

كيفية الجمع بين مسار الاختبار وبيان IF بدون متغير

كما ذكرت سابقًا ، بعد استخدام PowerShell Test-Path للتحقق مما إذا كان الملف موجودًا ، يمكنك استخدام النتيجة في إذا بيان لأداء مهام الإضافات.

في هذا المثال ، سوف أتحقق مما إذا كان E: Reports Operations.txt موجودًا وإذا كان موجودًا ، فسوف أقوم بنسخ الملف إلى C: Reports. هذا هو السيناريو الذي سيقوم بالمهمة.

يوصى بتشغيل هذا الأمر بتنسيق PowerShell ISE
If (Test-Path -Path E:
eportsprocesses.txt ) { Copy-Item -Path E:
eportsprocesses.txt -Destination C:
eports }

فيما يلي النتيجة في PowerShell ISE والملف المنسوخ في C: reports

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا

يمكنني جعل النص أكثر ذكاءً بإضافة سطرين إضافيين.

Write-Host 'file copied'

و….

Else { Write-Host 'file does not exist' }
يعرض الأمر الأول أعلاه رسالة إذا تم نسخ الملف. يعرض الثاني رسالة مفادها أن الملف غير موجود.

هذا هو النص المعدل ...

If (Test-Path -Path E:
eportsprocesses.txt ) { Copy-Item -Path E:
eportsprocesses.txt -Destination C:
eports Write-Host 'file copied' } Else { Write-Host 'file does not exist' }

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا بمتغير

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا بمتغير

في القسم الأخير ، أوضحت لك كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا دون استخدام المتغيرات. في هذا القسم ، سأحفظ نتيجة Test-Path في متغير. بعد ذلك ، استخدم المتغير في ملف إذا بيان.

في المثال الموجود في هذا القسم ، أريد التحقق مما إذا كان first-file.txt موجود في المسار الموضح في الصورة أدناه. بعد ذلك ، إذا كان موجودًا ، فسوف أنسخ الملف إلى C: PS

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا بمتغير

في الخطوات الأولى ، سأقوم بتشغيل الأمر أدناه:

$fileexists = Test-Path -Path E:
eportsfirst-file.txt

هذا الأمر هو نفس الأمر الأخير مع اختلاف واحد - يتم حفظ نتيجة الأمر في ملف الملف موجود عامل.

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا بمتغير

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا ونسخه

عندما قدمت هذا القسم ، قمت بحفظ إخراج ملف مسار الاختبار الأمر إلى الملف موجود عامل.

$fileexists = Test-Path -Path E:
eportsfirst-file.txt

في هذا القسم الفرعي ، سأعلمك كيفية نسخ الملف إذا كان موجودًا. للقيام بذلك ، سوف أقدم ملف إذا بيان مع نسخ العنصر يأمر.

If ($fileexists ) { Copy-Item -Path E:
eportsfirst-file.txt -Destination C:PS }

هذا هو النص الكامل مع الأوامر المدمجة:

$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Copy-Item -Path E:
eportsfirst-file.txt -Destination C:PS }

وهنا البرنامج النصي في PowerShell ISE.

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا وحذفه

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

إذا كنت تريد حذف الملف بدلاً من نسخه ، فاستبدل ملف نسخ العنصر الأمر مع إزالة بند يأمر.

إليك البرنامج النصي المحدث الذي يستخدم عبارة PowerShell IF للتحقق مما إذا كان الملف موجودًا. ثم ، إذا كان موجودًا ، فاحذفه ...

$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Remove-Item -Path E:
eportsfirst-file.txt -Force }

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا ، قم بالخروج

في بعض مواقف البرمجة النصية لـ PowerShell ، قد ترغب في التحقق من وجود ملف. ثم ، إذا كان موجودًا ، فقم بتنفيذ مهمة محددة - مثل نسخ الملف أو حذفه - وإلا ، فاخرج من البرنامج النصي.

لتحقيق ذلك ، كل ما عليك فعله هو إضافة ملف آخر كتلة من إذا بيان.

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

$fileexists = Test-Path -Path E:
eportsfirst-file.txt  
If ($fileexists ) {
Remove-Item -Path E: eportsfirst-file.txt -Force
}

إذا كنت أرغب في إنهاء البرنامج النصي إذا لم يكن الملف موجودًا ، فسأقوم بتعديل البرنامج النصي كما هو موضح أدناه ...

$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Remove-Item -Path E:
eportsfirst-file.txt -Force } Else { Break }

هذا هو منطق البرنامج النصي المعدل ...

تحقق مما إذا كان الملف ، E: Reports first-file.txt موجودًا. إذا كان موجودًا ، فاحذف الملف.

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

أجهزة نظام إنتاج سحق القرمزي

فترة راحة يخبر PowerShell بالتوقف عن معالجة البرنامج النصي. يمكنك أيضا إضافة فترة راحة في كتلة If من العبارة - أسفل أمر إزالة العنصر ...

$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Remove-Item -Path E:
eportsfirst-file.txt -Force Break } 

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا وليس فارغًا

هذا شرط آخر شائع في البرمجة النصية لـ PowerShell - التحقق مما إذا كان الملف موجودًا وليس فارغًا. قد يكون هذا قابلاً للتطبيق لملفات السجل.

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

بالانتقال ، لاختبار ما إذا كان الملف موجودًا ، يمكنك استخدام الامتداد مسار الاختبار يأمر. ومع ذلك ، للتحقق مما إذا كان الملف فارغًا ، تحتاج إلى إدخال أمر آخر ، Get-ChildItem .

في هذا السيناريو ، يمكنك استخدام ملف Get-ChildItem الأمر بطريقتين.

واحد ، إذا كنت تريد التحقق مما إذا كان ملف واحد فارغًا ، فيمكنك تشغيل Get-ChildItem الأمر ، باستخدام مسار الملف الكامل كملف طريق معامل. اثنين ، بدلاً من ذلك ، إذا كنت تريد التحقق من مجموعة من الملفات في مجلد ، فاستخدم مسار المجلد كملف طريق معامل.

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

في هذا المثال ، أريد التحقق مما إذا كان الملف ، first-file.txt وإذا كانت فارغة.

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا وليس فارغًا

كما ذكرت سابقًا ، فإن الخطوة الأولى هي تشغيل ملف Get-ChildItem الأمر ، باستخدام مسار الملف الكامل كملف طريق معامل. للبدء ، قم بتشغيل الأمر أدناه ...

Get-ChildItem -Path E:
eportsfirst-file.txt

ها هي نتيجة الأمر. من نتيجة الأمر ، يمكنك أن ترى أن الملف له خاصية تسمى طول .

على نحو فعال ، فإن طول خاصية ملف توضح حجم الملف. علاوة على ذلك ، إذا كان الملف فارغًا ، فإن ملف طول سيكون صفرًا (0).

لذلك ، لاستخدام PowerShell للتحقق مما إذا كانت ليست فارغة ، سوف نتحقق مما إذا كان ملف طول ليس صفرًا (0).

لتحقيق ذلك ، سأقوم بتعديل الأمر الأخير كما هو موضح أدناه ...

(Get-ChildItem -Path E:
eportsfirst-file.txt).  Length  -ne '0'

هذه نتيجة الأمر في PowerShell. في هذه الحالة ، نظرًا لأن حجم الملف الخاص بي هو 0 (فارغ) ، عاد الأمر خاطئة .

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا وليس فارغًا

هذا يعني أن هذا الملف فارغ.

ولكن كيف نقوم بتضمين البت الذي يختبر وجود الملف؟ سعيد لأنك سألت!

لتقديم المنطق الذي يستخدم PowerShell للتحقق مما إذا كان الملف موجودًا والتحقق أيضًا من أن الملف ليس فارغًا ، سأجمع أجزاء من البرنامج النصي السابق و Get-ChildItem الأمر أعلاه.

هنا نصي المعدل ...

معالج آريس غير قادر على الاتصال
$fileexists = Test-Path -Path E:
eportsfirst-file.txt $checkiffileisempty = (Get-ChildItem -Path E:
eportsfirst-file.txt).  Length  -ne '0' If (($fileexists -eq $True) -and ($checkiffileisempty -eq $False)) { Set-Content -Path E:
eportsfirst-file.txt -Value 'This will add some text for this file' }

في هذه النسخة المعدلة من البرنامج النصي ، أجريت التغييرات التالية ...

  1. في السطر 2 ، قمت بحفظ ملف Get-ChildItem الأمر الذي يتحقق مما إذا كان الملف فارغًا - في متغير يسمى checkiffileis فارغة .
$checkiffileisempty = (Get-ChildItem -Path E:
eportsfirst-file.txt).  Length  -ne '0'
  1. بعد ذلك ، في السطر 3 أضفت شرطًا آخر إلى ملف إذا بيان. جزء الشرط من إذا تم تحديث البيان إلى If ((fileexists -eq $ True) - و (checkiffileisempty -eq $ False)).

    تختبر هذه الحالة ما إذا كان يتم حفظه في ملف $ موجود يكون صحيح (الملف موجود). علاوة على ذلك ، فإنه يتحقق مما إذا كان يتم حفظه في checkiffileisempt $ يكون خطأ شنيع (الملف فارغ).

    على نحو فعال ، يتحقق PowerShell مما إذا كان ملف مسار الاختبار الأمر الذي تحقق من وجود مسار الملف هو صحيح . بالإضافة إلى ذلك ، فإنه يتحقق أيضًا مما إذا كان ملف Get-ChildItem الأمر الذي يتحقق مما إذا كان الملف ليس فارغًا هو خطأ شنيع (بمعنى أن الملف فارغ)
  2. أخيرًا ، إذا تم استيفاء كلا الشرطين ، في السطر 4 ، سيقوم PowerShell بتنفيذ الأمر الموجود في قوس {} من عبارة If.

    في هذا المثال ، لدي هذا الأمر في قوس {} من عبارة If.
Set-Content -Path E:
eportsfirst-file.txt -Value 'This will add some text for this file'

يضيف الأمر النص في ملف قيمة معلمة مجموعة المحتوى يأمر.

لاختبار عمل البرنامج النصي ، انسخه إلى PowerShell ISE وقم بتشغيل البرنامج النصي ...

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا وليس فارغًا

بمجرد تشغيل البرنامج النصي ، الملف ، first-file.txt - التي كانت فارغة من قبل - تحتوي الآن على بعض القيم. بالإضافة إلى ذلك ، لم يعد حجم الملف صفرًا (0)!

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في مجلد

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في مجلد

لقد غطى هذا الدليل حتى الآن سيناريوهات متعددة لاستخدام PowerShell للتحقق من وجود ملف.

في هذا القسم ، أريد التعمق في المجلدات. على وجه التحديد ، ستتعلم كيفية التحقق مما إذا كان الملف موجودًا في المجلد الحالي أو في جميع المجلدات الفرعية.

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

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في المجلد الحالي

في هذا المثال الأول ، ستتعلم كيفية التحقق من وجود ملف في المجلد الحالي - باستثناء جميع المجلدات الفرعية.

في هذا المثال ، أرغب في التحقق مما إذا كانت الملفات ذات ملحق الملف .log موجودة في المجلد E: reports. ومع ذلك ، أريد استبعاد كافة المجلدات الفرعية.

الخطوة الأولى هي تشغيل ملف Get-ChildItem يأمر. بعد ذلك ، قم بتوصيل الإخراج إلى أين الكائن وتصفية حسب حاوية PSIs منشأه.

ال حاوية PSIs الخاصية هي خاصية تحدد المجلدات أو الدلائل. في ال أين الكائن الأمر ، لقد حددت $ _. PSIsContainer -ne $ true. يقول هذا الأمر ببساطة لا تقم بإرجاع أي عنصر إذا كان حاوية PSIs الملكية صحيحة. سيؤدي هذا إلى إرجاع الملفات فقط.

ها هو الأمر ...

Get-ChildItem E:
eports | Where-Object {$_.PSIsContainer -ne $true}

وها هي النتيجة في PowerShell ...

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في المجلد الحالي

تتمثل الخطوة الأخيرة في إعادة المسار الكامل لجميع الملفات ذات الامتداد .log في المجلد الحالي.

ها هو الأمر ...

Get-ChildItem E:
eports | Where-Object { ($_.PSIsContainer -ne $true) -and ($_.Extension -eq '.log')} | Select-Object FullName

والنتيجة ...

من هذه النقطة ، إذا كنت ترغب في إجراء المزيد من المهام على الملفات ، فيمكنك توجيه إخراج النتيجة الأخيرة إلى ملف للجميع عقدة. ثم داخل للجميع loop ، يمكنك تشغيل أوامر إضافية.

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في المجلدات الفرعية

إذا كنت تريد التحقق من وجود ملف أو ملفات معينة في جميع المجلدات الفرعية ، وليس في المجلد الحالي ، فأنت بحاجة إلى إجراء تغييرات طفيفة على Get-ChildItem يأمر.

على وجه التحديد ، عند توجيه Get-ChildItem الأمر ، إلى أين الكائن ، تقوم بالتصفية أين الكائن للعودة المجلدات فقط.

(Get-ChildItem E:
eports | Where-Object {$_.PSIsContainer}).FullName

يقوم الأمر بإرجاع المسار الكامل لجميع المجلدات الفرعية في المجلد المحدد ...

في الخطوة التالية ، تحتاج إلى استخدام للجميع بيان للتكرار خلال جميع المجلدات التي تم إرجاعها بواسطة الأمر الأخير. ثم داخل للجميع البيان ، قم بتشغيل آخر Get-ChildItem الأمر ضد كل مجلد فرعي.

هناك ثلاثة أنواع مختلفة من للجميع لكن في هذا المثال ، سأستخدم امتداد للجميع -جسم Cmdlet.

(Get-ChildItem E:
eports | Where-Object {$_.PSIsContainer}).FullName |  ForEach  -Object { Get-ChildItem $_ | Where-Object { ($_.Extension -eq '.log')} | Select-Object Directory, FullName }

يعرض الأمر جميع ملفات السجل في المجلدات الفرعية ...

انتهت مهلة اتصال قمة بالخادم
كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في المجلدات الفرعية

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في المجلد الحالي وجميع المجلدات الفرعية

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

ومع ذلك ، سأقدم أ Get-ChildItem معلمة الأمر ، تسمى يعيد تنفيذ . ال يعيد تنفيذ قوى المعلمة Get-ChildItem للتحقق من المجلد المحدد وجميع مجلداته الفرعية.

هنا نص معدّل.

(Get-ChildItem E:
eports -  Recurse  ).FullName |  ForEach  -Object { Get-ChildItem $_ | Where-Object { ($_.Extension -eq '.log')} | Select-Object Directory, FullName }

ال يعيد تنفيذ تم إدخال المعلمة في الأول Get-ChildItem يأمر. لا يشترط في الثانية Get-ChildItem الأمر (داخل لكل كائن منع).

ها هي نتيجة الأمر. هذه المرة ، يتضمن التقرير جميع ملفات السجل في المجلد العلوي وجميع مجلداته الفرعية.

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في جهاز كمبيوتر بعيد

كيفية استخدام PowerShell للتحقق مما إذا كان الملف موجودًا في جهاز كمبيوتر بعيد

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

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

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

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

أخيرًا ، استخدم ملف اسم الحاسوب معلمة لتحديد اسم الكمبيوتر البعيد.

كمرجع لك ، إليك الصيغة العامة لملف استدعاء الأمر يأمر.

Invoke-Command -ComputerName -Credential -ScriptBlock {Test-Path}

لقراءة المزيد عن استدعاء الأمر الأمر ، راجع المراجع وقراءات إضافية في نهاية هذا الدليل.

إذا كنت آمل أن أكون قادرًا على تعليمك بنجاح كيفية استخدام PowerShell للتحقق من وجود ملف!

آمل أيضًا أن تكون قد وجدت S Zone مفيدة. إذا وجدت أنها مفيدة ، يرجى التصويت نعم إلى هل كان هذا المنشور سؤالًا مفيدًا أدناه.

بدلاً من ذلك ، يمكنك طرح سؤال أو ترك تعليق أو تقديم ملاحظات باستخدام نموذج 'ترك الرد' الموجود في نهاية هذه الصفحة.

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

المراجع وقراءات إضافية

  1. استدعاء الأمر
  2. Powershell إذا تم شرحه آخر: النحو والأمثلة
  3. Get-ChildItem
  4. مسار الاختبار