
أعتقد أنك ، مثلي ، شاهدت في كثير من الأحيان مسارات الشكل
\ !!! مهم \ ____ جديد ____ \ !!! لا تحذف !!! \ الأمر رقم 98819-649-B بتاريخ 30 فبراير 1985 بشأن تعيين كوزلوف إيفان ألكساندروفيتش كرئيس مؤقت لقسم مرافقة عملاء VIP من الشركات وتنظيم اجتماعات العمل على الخطوط الجانبية .
وفي كثير من الأحيان لفتح مثل هذا المستند في ويندوز لا يعمل على الفور. شخص ما يمارس الحل البديل في شكل تعيين للقرص ، يستخدم شخص ما مديري الملفات الذين يمكنهم العمل مع المسارات الطويلة: مدير أقصى ، قائد المجموع وما شابه. وشاهد الكثير من الناس بحزن أثناء قيامهم بإنشاء نص PS ، الذي كان الكثير من العمل والذي عمل في بيئة اختبار مع اثارة ضجة ، في بيئة قتالية اشتكى بلا حول ولا قوة حول مهمة مستحيلة:
المسار المحدد ، اسم الملف ، أو كليهما طويل جدًا . يجب أن يكون اسم الملف المؤهل بالكامل أقل من 260 حرفًا ، ويجب أن يكون اسم الدليل أقل من 248 حرفًا.كما اتضح ، فإن 260 حرفًا تكفي "ليس للجميع فقط". إذا كنت مهتمًا بتجاوز حدود المسموح به - فأنا أطلب القط.
فيما يلي بعض العواقب المحزنة لتقييد طول مسار الملف:
انحرافًا قليلاً عن الموضوع ، لاحظت أنه بالنسبة إلى DFS Replication ، فإن المشكلة التي تم تناولها في المقالة ليست فظيعة وأن الملفات ذات الأسماء الطويلة تنتقل بنجاح من خادم إلى خادم (ما
لم تفعل بالطبع كل شيء
بشكل صحيح الباقي).
أود أيضًا أن أسترعي الانتباه إلى أداة
النسخ الاحتياطي المفيدة جدًا
التي ساعدتني أكثر من مرة. هي أيضًا ، لا تخاف من المسارات الطويلة ، وهي تعرف الكثير. لذلك ، إذا كانت المهمة تتعلق بنسخ / نقل بيانات الملف ، فيمكنك التوقف عندها. إذا كنت بحاجة إلى إزالة العيوب من خلال قوائم التحكم في الوصول إلى نظام الملفات (DACLs) ، فانتقل نحو
subinacl . على الرغم من عمره الكبير ، فقد أظهر نتائج ممتازة على Windows 2012 R2. وتناقش طرق التطبيق هنا.
كان من المثير للاهتمام بالنسبة لي أن أعلم كيفية العمل بطرق طويلة من PowerShell. معه مثل تقريبا في حكاية ملتح حول ايفان تساريفيتش وفاسيليسا الجميلة.
طريقة سريعة
انتقل إلى
Linux ولا تبث نظام التشغيل Windows 10/2016/2019 وقم بتمكين إعداد / النقر فوق "نهج المجموعة" المقابل. لن أتطرق إلى هذه الطريقة بالتفصيل ، لأن هناك بالفعل الكثير من المقالات على الشبكة حول هذا الموضوع ، على سبيل المثال ،
هذا واحد .
نظرًا لوجود العديد من الشركات في العديد من الشركات ، بعبارة بسيطة ، وليست الإصدارات الجديدة من أنظمة التشغيل ، فإن هذه الطريقة سريعة فقط للكتابة على الورق ، ما لم تكن بالطبع أحد المحظوظين الذين لديهم عدد قليل من الأنظمة القديمة ويحكمون Windows 10/2016/2019 .
طريق طويل
هنا نقوم فوراً بالحجز بأن التغييرات لن تؤثر على سلوك Windows Explorer ، ولكن ستمكن من استخدام المسارات الطويلة في أوامر cmdlets في PowerShell ، مثل Get-Item ، Get-ChildItem ، Remove-Item ، إلخ.
أولاً ، ترقية PowerShell. يتم ذلك واحد اثنين ثلاثة.
- نقوم بتحديث .NET Framework إلى إصدار لا يقل عن 4.5. يجب أن يكون نظام التشغيل Windows 7 SP1 / 2008 R2 على الأقل. يمكن تنزيل الإصدار الحالي من هنا ، اقرأ المزيد من المعلومات هنا .
- قم بتنزيل وتثبيت Windows Management Framework 5.1
- أعد تشغيل السيارة.
يمكن للناس الذين يعملون بجد أن يقوموا بالخطوات الموضحة أعلاه يدويًا ، كسول - بمساعدة SCCM والسياسات والبرامج النصية و
enikeys من أدوات التشغيل الآلي الأخرى.
يمكن العثور على الإصدار الحالي من PowerShell في المتغير
$ PSVersionTable . بعد التحديث ، يجب أن يكون شيء مثل هذا:

الآن عند استخدام أوامر cmdlets
Get-ChildItem وما شابه ، بدلاً من
المسار المعتاد
، سنستخدم
LiteralPath .
سيكون تنسيق المسارات مختلفًا قليلاً:
Get-ChildItem -LiteralPath "\\?\C:\Folder" Get-ChildItem -LiteralPath "\\?\UNC\ServerName\Share" Get-ChildItem -LiteralPath "\\?\UNC\192.168.0.10\Share"
لتوفير الراحة لتحويل المسارات من التنسيق المألوف إلى تنسيق
LiteralPath ،
يمكنك استخدام هذه الوظيفة:
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"} }
يرجى ملاحظة أنه لا يمكنك استخدام أحرف البدل (
* ،
؟ ، إلخ) عند تحديد المعلمة
LiteralPath .
بالإضافة إلى المعلمة
LiteralPath ، في الإصدار المحدّث من PowerShell ، تلقت cmdlet
Get-ChildItem المعلمة
Depth ، والتي يمكنك من خلالها تعيين عمق التعشيش لإجراء بحث متكرر ، لقد استخدمته عدة مرات وكنت راضيًا.
الآن لا يمكنك أن تخاف من أن برنامج PS-script الخاص بك سوف يضل ولن يقوم بإخراج ملفات بعيدة. على سبيل المثال ، ساعدني هذا النهج كثيرًا عند كتابة برنامج نصي لإسقاط السمة "المؤقتة" على الملفات الموجودة في مجلدات DFSR. لكن هذه قصة أخرى ، سأحاول سردها في مقال آخر.
UPD 07/06/2019: مقالة وعدتأنا في انتظار تعليقات شيقة منك واقترح إجراء استطلاع.
روابط مفيدة:docs.microsoft.com/ru-ru/dotnet/api/microsoft.powershell.commands.contentcommandbase.literalpath؟view=powershellsdk-1.1.0docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem؟view=powershell-5.1stackoverflow.com/questions/46308030/handling-path-too-long-exception-with-new-psdrive/46309524luisabreu.wordpress.com/2013/02/15/theliteralpath-parameter