ما هو معنى Powershell نسخة-العنصر -حاوية الحجة ؟
-
02-07-2019 - |
سؤال
أنا كتابة البرنامج النصي PowerShell مرض التصلب العصبي المتعدد.هذا البرنامج النصي يستخدم Copy-Item
الأوامر.واحدة من وسيطات اختيارية إلى هذا الأمر "-container
".وثائق الحجة الدول أن تحدد هذه الحجة "يحافظ على الكائنات الحاوية أثناء عملية النسخ."
هذا هو كل شيء حسن وجيد ، سأكون آخر شخص تريد ليس موجودا ضمن حاوية الكائنات أثناء عملية النسخ.ولكن بكل جدية ، ما هذه الحجة تفعل ؟ لا سيما في حالة أين أنا نسخ القرص شجرة الدليل من مكان إلى آخر ، ما الفرق في هذا إلى سلوك Copy-Item
الأمر ؟
المحلول
الحاوية الوثائق تتحدث عن بنية المجلد.إذا كنت تفعل العودية ونسخ يريدون الحفاظ على بنية المجلد يمكنك استخدام الحاويات التبديل.(ملاحظة:افتراضيا -حاوية التبديل تعيين إلى true ، لذلك كنت حقا لا تحتاج إلى تحديد ذلك.إذا أردت إيقاف تشغيله هل يمكن استخدام -container: $false
.)
هناك مشكلة في هذا...إذا كنت تفعل في سرد الدليل الأنابيب إلى نسخ البند ، فإنه لن الحفاظ على بنية المجلد.إذا كنت ترغب في الحفاظ على بنية المجلد ، عليك أن تحدد مسار والممتلكات -recurse التبديل.
نصائح أخرى
أنا أيضا العثور على وثائق أقل من مفيدة.فعلت بعض الاختبارات لمعرفة كيفية -Container
المعلمة يعمل جنبا إلى جنب مع -Recurse
عند نسخ الملفات والمجلدات.
علما بأن -Container
يعني -Container: $true
.
هذا هو بنية الملف لا تستخدم الأمثلة:
# X:.
# ├───destination
# └───source
# │ source.1.txt
# │ source.2.txt
# │
# └───source.1
# source.1.1.txt
- جميع الأمثلة الموقع الحالي (pwd) ،
X:\
. - اعتدت PowerShell 4.0.
1) نسخ فقط مصدر مجلد (مجلد فارغ):
Copy-Item -Path source -Destination .\destination
Copy-Item -Path source -Destination .\destination -Container
# X:.
# ├───destination
# │ └───source
# └───source (...)
التالي يعطي خطأ:
Copy-Item -Path source -Destination .\destination -Container: $false
# Exception: Container cannot be copied to another container.
# The -Recurse or -Container parameter is not specified.
2) نسخة كاملة بنية المجلد مع الملفات:
Copy-Item -Path source -Destination .\destination -Recurse
Copy-Item -Path source -Destination .\destination -Recurse -Container
# X:.
# ├───destination
# │ └───source
# │ │ source.1.txt
# │ │ source.2.txt
# │ │
# │ └───source.1
# │ source.1.1.txt
# └───source (...)
3) نسخ جميع أحفاد (الملفات والمجلدات) في مجلد واحد:
Copy-Item -Path source -Destination .\destination -Recurse -Container: $false
# X:.
# ├───destination
# │ │ source.1.1.txt
# │ │ source.1.txt
# │ │ source.2.txt
# │ │
# │ └───source.1
# └───source (...)