Windows, PowerShell, sareng Long Paths

Windows, PowerShell, sareng Long Paths

Jigana anjeun, kawas kuring, geus katempo jalur kawas ieu leuwih ti sakali !!! Kadé____Anyar____!!! Tong dipupus!!! No Pesenan 98819-649-B tanggal 30 Pebruari 1985 ngeunaan pengangkatan Ivan Aleksandrovich Kozlov salaku kapala jabatan sementara pikeun ngadukung klien VIP perusahaan sareng ngatur rapat bisnis di sidelines.doc.

Sareng sering anjeun moal tiasa langsung muka dokumen sapertos dina Windows. Sababaraha urang ngalaksanakeun workaround dina bentuk pemetaan disk, anu sanésna nganggo manajer file anu tiasa dianggo sareng jalur anu panjang: Manajer Jauh, Panglima Total sareng anu sanésna. Sareng seueur deui anu ningali kalayan sedih sapertos naskah PS anu aranjeunna ciptakeun, dimana seueur padamelan anu diinvestasi sareng anu damel sareng bang di lingkungan uji, dina lingkungan produksi teu aya daya ngawadul ngeunaan tugas anu mustahil: Jalur anu ditangtukeun, nami file, atanapi duanana panjang teuing. Ngaran file anu mumpuni lengkep kedah kirang ti 260 karakter, sareng nami diréktori kedah kirang ti 248 karakter.
Tétéla, 260 karakter cukup "henteu ngan pikeun sadayana." Upami anjeun kabetot pikeun ngalangkungan wates anu diidinan, mangga tingal ucing.

Ieu mangrupikeun sababaraha akibat tina ngabatesan panjang jalur file:

Diverging rada tina topik, abdi dicatet yén pikeun réplikasi DFS masalah dibahas dina artikel teu dahsyat jeung file kalawan ngaran panjang suksés ngarambat ti server ka server (lamun, tangtosna, sagalana sejenna nyaeta. dipigawé katuhu).

Abdi ogé hoyong ngagambar perhatian anjeun ka utilitas anu mangpaat anu parantos ngabantosan kuring langkung ti sakali robocopy. Manehna oge teu sieun jalur panjang, sarta manehna bisa ngalakukeun loba. Ku alatan éta, lamun tugas bisul handap pikeun nyalin / mindahkeun data file, Anjeun bisa eureun di dinya. Lamun perlu maénkeun trik kalawan daptar kontrol aksés sistem file (DACLs), kasampak jauh subinacl. Sanajan umurna geus maju, éta dipigawé unggul dina Windows 2012 R2. di dieu métode aplikasi dianggap.

Abdi resep ngajar cara damel sareng jalur PowerShell anu panjang. Kalawan manehna eta ampir kawas dina lulucon bearded ngeunaan Ivan Tsarevich na Vasilisa nu Geulis.

Cara gancang

Pindah ka Linux sareng entong hariwang ngeunaan Windows 10/2016/2019 sareng aktipkeun setélan kawijakan grup anu luyu / tweak pendaptaran. Kuring moal cicing dina metode ieu sacara rinci, sabab ... Aya seueur tulisan ngeunaan topik ieu dina Internét, contona, эта.

Mertimbangkeun yén kalolobaan pausahaan boga loba, mun nempatkeun eta mildly, teu versi panganyarna tina sistem operasi, metoda ieu gancang ngan pikeun nulis dina kertas, iwal, tangtosna, anjeun salah sahiji jalma untung anu boga sababaraha sistem warisan na Windows 10 /2016/2019 reigns pangluhurna.

Jalan anu panjang

Hayu urang geura-giru nyieun reservasi dieu yén parobahan moal mangaruhan paripolah Windows Explorer, tapi bakal ngamungkinkeun ngagunakeun jalur panjang dina PowerShell cmdlets, kayaning Get-Item, Get-ChildItem, Remove-Item, jsb.

Mimiti, hayu urang ngapdet PowerShell. Éta dilakukeun hiji, dua, tilu kali.

  1. Urang ngamutahirkeun .NET Framework kana versi teu leuwih handap 4.5. Sistem operasi kedah sahenteuna Windows 7 SP1/2008 R2. Anjeun tiasa ngundeur versi ayeuna di dieu, baca inpo nu leuwih lengkep di dieu.
  2. Ngundeur sareng pasang Windows Management Framework 5.1
  3. Urang reboot mesin.

Трудолюбивые могут сделать описанные выше шаги вручную, ленивые — с помощью SCCM, политик, скриптов и эникеев других средств автоматизации.

Versi PowerShell ayeuna tiasa dipendakan tina variabel $PSVersionTable. Saatos apdet éta kedah katingali sapertos kieu:

Windows, PowerShell, sareng Long Paths

Ayeuna nalika nganggo cmdlet Meunang-ChildItem jeung kawas tinimbang biasa jalan urang bakal ngagunakeun literalPath.

Format jalur bakal rada béda:

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

Pikeun genah ngarobah jalur tina format biasa kana format nu literalPath anjeun tiasa nganggo fungsi ieu:

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"}
}

Punten dicatet yén nalika netepkeun parameter literalPath Anjeun teu tiasa nganggo wildcards (*, ? jeung sajabana).

Помимо параметра literalPath, dina versi diropéa tina PowerShell cmdlet Meunang-ChildItem ngagaduhan parameter jerona, anu anjeun tiasa nyetél jero nyarang pikeun milarian rekursif, kuring dianggo sababaraha kali sareng puas.

Ayeuna anjeun teu kedah hariwang yén skrip PS anjeun bakal sesat sapanjang jalur anu panjang sareng moal tiasa ningali file anu jauh. Salaku conto, pendekatan ieu ngabantosan kuring nalika nyerat naskah pikeun ngareset atribut "samentara" file dina polder DFSR. Tapi éta carita sejen, nu kuring bakal coba ngabejaan dina artikel séjén. Abdi ngarep pisan komentar anu pikaresepeun ti anjeun sareng nyarankeun anjeun nyandak survey.

Tumbu mangpaat:
docs.microsoft.com/ru-ru/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/parameter-theliteralpath

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Naha masalah jalur panjang relevan pikeun anjeun?

  • yen

  • Éta relevan, tapi geus mutuskeun

  • Ieu interferes, tapi teu pira

  • Teu sangka, sagalana sigana jalan

  • teu

  • Lainna (mangga tuliskeun dina koméntar)

155 pamaké milih. 25 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar