Windows, PowerShell eta Long Paths

Windows, PowerShell eta Long Paths

Uste dut, nik bezala, horrelako bideak behin baino gehiagotan ikusi dituzula !!! Garrantzitsua____Berria____!!! Ez ezabatu!!!98819eko otsailaren 649eko 30-1985-B Agindu zk. Ivan Aleksandrovich Kozlov izendatzean VIP bezero korporatiboei laguntzeko eta alboan negozio bilerak antolatzeko saileko aldi baterako buru izendatu zuten.doc.

Eta askotan ezin izango duzu halako dokumenturik ireki Windows-en berehala. Batzuek konponbidea lantzen dute disko-mapa moduan, beste batzuek bide luzeekin lan egin dezaketen fitxategi-kudeatzaileak erabiltzen dituzte: Far Manager, Total Commander eta antzekoak. Eta beste askok tristuraz ikusi zuten sortu zuten PS gidoia, zeinetan lan asko inbertitu zen eta proba-ingurunean kolpeka funtzionatzen zuena, ekoizpen-ingurune batean ezinezko zeregin bati buruz kexatu gabe: Zehaztutako bidea, fitxategi-izena edo biak luzeegiak dira. Fitxategi-izena guztiz kualifikatuak 260 karaktere baino gutxiago izan behar ditu eta direktorioaren izenak 248 karaktere baino gutxiago izan behar ditu.
Ikusten denez, 260 karaktere nahikoa dira "ez bakarrik guztiontzat". Baimendutakoaren mugak gainditzea interesatzen bazaizu, jo ezazu katuari.

Hona hemen fitxategi-bidearen luzera mugatzearen ondorio tamalgarri batzuk:

Gaitik apur bat aldenduz, ohartzen naiz DFS Erreplikaziorako artikuluan eztabaidatzen den arazoa ez dela ikaragarria eta izen luzeak dituzten fitxategiak zerbitzaritik zerbitzarira ongi joaten direla (beste guztia bada, noski. ondo eginda).

Era berean, zure arreta erakarri nahi nuke behin baino gehiagotan lagundu didan erabilgarritasun oso baliagarri bati robocopy. Bide luzeei ere ez die beldurrik, eta asko egin dezake. Hori dela eta, zeregina fitxategien datuak kopiatzea/transferentziara mugatzen bada, hor geldi zaitezke. Fitxategi-sistemaren sarbide-kontrol-zerrendekin (DACL) trikimailuak jokatu behar badituzu, begiratu alde batera subinacl. Adin aurreratua izan arren, bikain aritu zen Windows 2012 R2-n. Hemen aplikatzeko metodoak kontuan hartzen dira.

PowerShell bide luzeekin nola lan egin irakastea interesatzen zitzaidan. Berarekin ia Ivan Tsarevitx eta Vasilisa Ederrari buruzko txantxa bizar batean bezala.

Modu azkar

Aldatu Linux-era eta ez kezkatu Windows 10/2016/2019 eta gaitu talde-politikaren ezarpen egokia/aldatu erregistroa. Ez naiz metodo honetan zehatz-mehatz luzatuko, zeren... Dagoeneko Interneten gai honi buruzko artikulu asko daude, adibidez, hau.

Kontuan izanda enpresa gehienek asko dituztela, emeki esanda, ez sistema eragileen azken bertsioak, metodo hau azkarra da paperean idazteko soilik, salbu, noski, ondare sistema gutxi dituen eta Windows 10 duten zorte horietako bat ez bazara. /2016/2019 da nagusi .

Bide luzea

Egin dezagun berehala erreserba hemen aldaketek ez dutela Windows Explorer-en portaeran eragingo, baina bide luzeak erabiltzeko aukera emango duela PowerShell cmdletetan, hala nola Get-Item, Get-ChildItem, Remove-Item, etab.

Lehenik eta behin, egunera dezagun PowerShell. Bat, bi, hiru aldiz egin da.

  1. .NET Framework 4.5 baino txikiagoa ez den bertsiora eguneratzen dugu. Sistema eragileak gutxienez Windows 7 SP1/2008 R2 izan behar du. Uneko bertsioa deskargatu dezakezu Hemen, irakurri informazio gehiago Hemen.
  2. Deskargen eta instalatu Windows Management Framework 5.1
  3. Makina berrabiaraziko dugu.

Jende langileek goian deskribatutako urratsak eskuz egin ditzakete, alferek SCCM, politika, script eta beste automatizazio tresnen laguntzarekin egin ditzakete.

PowerShell-en egungo bertsioa aldagaitik aurki daiteke $PSVersionTable. Eguneratu ondoren, itxura hau izan beharko luke:

Windows, PowerShell eta Long Paths

Orain cmdlet-ak erabiltzean Get-ChildItem eta antzekoak ohikoaren ordez Path erabiliko dugu literalbidea.

Bide-formatua zertxobait desberdina izango da:

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

Bideak ohiko formatutik formatura bihurtzeko erosotasunerako literalbidea funtzio hau erabil dezakezu:

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

Kontuan izan parametroa ezartzerakoan literalbidea Ezin dituzu komodinak erabili (*, ? eta abar).

Parametroaz gain literalbidea, PowerShell cmdlet-en bertsio eguneratuan Get-ChildItem parametroa lortu du Sakonera, bilaketa errekurtsiborako habia-sakonera ezar dezakezu, pare bat aldiz erabili nuen eta pozik geratu nintzen.

Orain ez duzu kezkatu behar PS script-a bide arantzatsu luzean zehar okertuko dela eta ezin izango dituelako urrutiko fitxategiak ikusi. Adibidez, ikuspegi honek asko lagundu zidan script bat idaztean DFSR karpetetako fitxategien "aldi baterako" atributua berrezartzeko. Baina hori beste istorio bat da, beste artikulu batean kontatzen saiatuko naizena. Zure iruzkin interesgarriak espero ditut eta inkesta egitea proposatzen dizut.

Esteka erabilgarriak:
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/theliteralpath-parameter

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

Bide luzeen arazoa garrantzitsua al da zuretzat?

  • Bai

  • Garrantzitsua zen, baina dagoeneko erabakita

  • Oztopatzen du, baina ez asko

  • Ez nuen pentsatu, dena funtzionatzen ari dela dirudi

  • No

  • Bestela (zehaztu iruzkinetan)

155 erabiltzailek eman dute botoa. 25 erabiltzaile abstenitu ziren.

Iturria: www.habr.com

Gehitu iruzkin berria