Windows و PowerShell و Long Paths

Windows و PowerShell و Long Paths

أعتقد أنك ، مثلي ، غالبًا ما رأيت مسارات من هذا الشكل !!! هام ____ ____ جديد !!! لا تحذف !!! الأمر رقم 98819-649-B بتاريخ 30 فبراير 1985 بشأن تعيين إيفان ألكساندروفيتش كوزلوف كرئيس بالإنابة لقسم دعم عملاء كبار الشخصيات من الشركات وتنظيم اجتماعات العمل على الهامش. doc.

وغالبًا لن تتمكن من فتح مثل هذا المستند في Windows على الفور. يمارس شخص ما الحل البديل في شكل تعيين القرص ، يستخدم شخص ما مديري الملفات الذين يمكنهم العمل مع المسارات الطويلة: Far Manager و Total Commander وما شابه ذلك. وشاهد الكثيرون للأسف كيف أن نص PS الذي قاموا بإنشائه ، والذي تم فيه استثمار الكثير من العمل والذي نجح في إحداث ضجة في بيئة الاختبار ، في بيئة القتال ، اشتكى بلا حول ولا قوة من مهمة مستحيلة: المسار المحدد أو اسم الملف أو كليهما طويل جدًا. يجب أن يكون اسم الملف المؤهل بالكامل أقل من 260 حرفًا، ويجب أن يكون اسم الدليل أقل من 248 حرفًا.
كما اتضح ، 260 حرفًا كافية "ليس فقط للجميع". إذا كنت مهتمًا بتجاوز حدود ما هو مسموح به ، فأنا أسأل تحت قطة.

فيما يلي عدد قليل من النتائج المؤسفة لتحديد طول مسار الملف:

انحرفت قليلاً عن الموضوع ، ألاحظ أنه بالنسبة إلى DFS Replication ، فإن المشكلة التي تم تناولها في المقالة ليست رهيبة وأن الملفات ذات الأسماء الطويلة تنتقل بنجاح من خادم إلى خادم (ما لم تكن ، بالطبع ، غير ذلك تم على أكمل وجه).

أود أيضًا أن ألفت الانتباه إلى أداة مفيدة للغاية ساعدتني أكثر من مرة كيكر. هي أيضًا لا تخاف من الطرق الطويلة ، وهي تعرف الكثير. لذلك ، إذا كانت المهمة تتعلق بنسخ / نقل بيانات الملف ، فيمكنك التوقف عند ذلك. إذا كنت بحاجة إلى العبث بقوائم التحكم في الوصول إلى نظام الملفات (DACL) ، فابحث بعيدًا سبيناكل. على الرغم من عمره الكبير ، فقد أظهر نفسه تمامًا على Windows 2012 R2. هنا تعتبر طرق التطبيق.

كنت مهتمًا أيضًا بتعلم كيفية العمل مع مسارات PowerShell الطويلة. معه ، كما هو الحال في نكتة ملتحية حول إيفان تساريفيتش وفاسيليسا الجميلة.

طريقة سريعة

قم بالتبديل إلى Linux ولا تقلق بشأن Windows 10/2016/2019 وتمكين إعداد سياسة المجموعة / قرص التسجيل المناسب. لن أسهب في الحديث عن هذه الطريقة بالتفصيل ، لأن. هناك بالفعل العديد من المقالات على الشبكة حول هذا الموضوع ، على سبيل المثال ، هذا.

بالنظر إلى أنه يوجد في معظم الشركات العديد ، بعبارة ملطفة ، إصدارات أنظمة التشغيل ليست حديثة ، فهذه الطريقة سريعة فقط للكتابة على الورق ، ما لم تكن ، بالطبع ، أحد هؤلاء المحظوظين الذين لديهم القليل من الأنظمة القديمة ونظام التشغيل Windows 10/2016/2019 حكم.

طريق طويل

هنا نقوم على الفور بالحجز بأن التغييرات لن تؤثر على سلوك Windows Explorer ، ولكنها ستجعل من الممكن استخدام المسارات الطويلة في PowerShell cmdlets ، مثل Get-Item و Get-ChildItem و Remove-Item وما إلى ذلك.

أولاً ، دعنا نقوم بتحديث PowerShell. لقد تم واحد ، اثنان ، ثلاثة.

  1. نقوم بتحديث .NET Framework إلى إصدار 4.5 على الأقل. يجب أن يكون نظام التشغيل Windows 7 SP1 / 2008 R2 على الأقل. يمكن تنزيل الإصدار الحالي هنااقرأ المزيد من المعلومات هنا.
  2. تحميل وتثبيت Windows Management Framework 5.1
  3. نعيد تشغيل الجهاز.

يمكن للذين يعملون بجد القيام بالخطوات المذكورة أعلاه يدويًا ، ويمكن للكسالى القيام بذلك بمساعدة SCCM والسياسات والبرامج النصية وأدوات التشغيل الآلي الأخرى.

يمكن العثور على الإصدار الحالي من PowerShell من المتغير PSVersionTable دولار. بعد التحديث يجب أن يبدو كالتالي:

Windows و PowerShell و Long Paths

الآن عند استخدام أوامر cmdlets الحصول على لChildItem وآخرين مثله بدلًا من المعتاد مسار سوف نستخدم المسار الحرفي.

سيكون تنسيق المسارات مختلفًا قليلاً:

Get-ChildItem -LiteralPath "?C:Folder"
Get-ChildItem -LiteralPath "?UNCServerNameShare"
Get-ChildItem -LiteralPath "?UNC192.168.0.10Share"

لسهولة تحويل المسارات من التنسيق المعتاد إلى التنسيق المسار الحرفي يمكنك استخدام هذه الوظيفة:

Function ConvertTo-LiteralPath 
Param([parameter(Mandatory=$true, Position=0)][String]$Path)
    If ($Path.Substring(0,2) -eq "") {Return ("?UNC" + $Path.Remove(0,1))}
    Else {Return "?$Path"}
}

يرجى ملاحظة أنه عند ضبط المعلمة المسار الحرفي لا يمكن استخدام أحرف البدل (*, ? الخ).

بالإضافة إلى المعلمة المسار الحرفي، في أمر PowerShell cmdlet المحدث الحصول على لChildItem تلقى المعلمة عمق، التي يمكنك من خلالها ضبط عمق التداخل للبحث التكراري ، استخدمته عدة مرات وكنت راضيًا.

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

روابط مفيدة:
docs.microsoft.com/en-us/dotnet/api/microsoft.powershell.commands.contentcommandbase.literalpath؟view=powershellsdk-1.1.0
docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem؟view=powershell-5.1
stackoverflow.com/questions/46308030/handling-path-too-long-exception-with-new-psdrive/46309524
luisabreu.wordpress.com/2013/02/15/theliteralpath-parameter

يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. تسجيل الدخول، من فضلك.

هل مشكلة المسارات الطويلة تهمك؟

  • نعم

  • كانت ذات صلة ، لكنها قررت بالفعل

  • يتدخل ، لكن ليس كثيرًا

  • لم أفكر في الأمر ، يبدو أن كل شيء يعمل

  • لا

  • أخرى (حدد في التعليقات)

صوت 155 مستخدمين. امتنع 25 مستخدما عن التصويت.

المصدر: www.habr.com

إضافة تعليق