ما هو معنى Powershell نسخة-العنصر -حاوية الحجة ؟

StackOverflow https://stackoverflow.com/questions/129088

  •  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 (...)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top